mirror of
https://gitee.com/dotnetchina/SqlSugar.git
synced 2025-09-19 01:58:13 +08:00
Support SqlServer TypeName
This commit is contained in:
@@ -41,6 +41,35 @@ namespace SqlSugar
|
||||
SettingDataType(type);
|
||||
}
|
||||
|
||||
|
||||
public SugarParameter(string name, object value, System.Data.DbType type)
|
||||
{
|
||||
this.Value = value;
|
||||
this.ParameterName = name;
|
||||
this.DbType = type;
|
||||
}
|
||||
public SugarParameter(string name, DataTable value,string SqlServerTypeName)
|
||||
{
|
||||
this.Value = value;
|
||||
this.ParameterName = name;
|
||||
this.TypeName = SqlServerTypeName;
|
||||
}
|
||||
public SugarParameter(string name, object value, System.Data.DbType type, ParameterDirection direction)
|
||||
{
|
||||
this.Value = value;
|
||||
this.ParameterName = name;
|
||||
this.Direction = direction;
|
||||
this.DbType = type;
|
||||
}
|
||||
public SugarParameter(string name, object value, System.Data.DbType type, ParameterDirection direction, int size)
|
||||
{
|
||||
this.Value = value;
|
||||
this.ParameterName = name;
|
||||
this.Direction = direction;
|
||||
this.Size = size;
|
||||
this.DbType = type;
|
||||
}
|
||||
|
||||
private void SettingDataType(Type type)
|
||||
{
|
||||
if (type == UtilConstants.ByteArrayType)
|
||||
@@ -197,5 +226,8 @@ namespace SqlSugar
|
||||
{
|
||||
this.DbType = System.Data.DbType.String;
|
||||
}
|
||||
|
||||
|
||||
public string TypeName { get; set; }
|
||||
}
|
||||
}
|
||||
|
@@ -66,8 +66,8 @@ namespace SqlSugar
|
||||
}
|
||||
if (parameters.HasValue())
|
||||
{
|
||||
IDataParameter[] ipars = ToIDbDataParameter(parameters);
|
||||
sqlCommand.Parameters.AddRange((SqlParameter[])ipars);
|
||||
SqlParameter[] ipars = GetSqlParameter(parameters);
|
||||
sqlCommand.Parameters.AddRange(ipars);
|
||||
}
|
||||
CheckConnection();
|
||||
return sqlCommand;
|
||||
@@ -108,5 +108,42 @@ namespace SqlSugar
|
||||
}
|
||||
return result;
|
||||
}
|
||||
/// <summary>
|
||||
/// if mysql return MySqlParameter[] pars
|
||||
/// if sqlerver return SqlParameter[] pars ...
|
||||
/// </summary>
|
||||
/// <param name="parameters"></param>
|
||||
/// <returns></returns>
|
||||
public SqlParameter[] GetSqlParameter(params SugarParameter[] parameters)
|
||||
{
|
||||
if (parameters == null || parameters.Length == 0) return null;
|
||||
SqlParameter[] result = new SqlParameter[parameters.Length];
|
||||
int index = 0;
|
||||
foreach (var parameter in parameters)
|
||||
{
|
||||
if (parameter.Value == null) parameter.Value = DBNull.Value;
|
||||
var sqlParameter = new SqlParameter();
|
||||
sqlParameter.ParameterName = parameter.ParameterName;
|
||||
sqlParameter.UdtTypeName = parameter.UdtTypeName;
|
||||
sqlParameter.Size = parameter.Size;
|
||||
sqlParameter.Value = parameter.Value;
|
||||
sqlParameter.DbType = parameter.DbType;
|
||||
sqlParameter.Direction = parameter.Direction;
|
||||
result[index] = sqlParameter;
|
||||
if (parameter.TypeName.HasValue()) {
|
||||
sqlParameter.TypeName = parameter.TypeName;
|
||||
sqlParameter.SqlDbType = SqlDbType.Structured;
|
||||
sqlParameter.DbType = System.Data.DbType.Object;
|
||||
}
|
||||
if (sqlParameter.Direction.IsIn(ParameterDirection.Output, ParameterDirection.InputOutput, ParameterDirection.ReturnValue))
|
||||
{
|
||||
if (this.OutputParameters == null) this.OutputParameters = new List<IDataParameter>();
|
||||
this.OutputParameters.RemoveAll(it => it.ParameterName == sqlParameter.ParameterName);
|
||||
this.OutputParameters.Add(sqlParameter);
|
||||
}
|
||||
++index;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user