今天在开发过程中遇到SqlDbType.Decimal类型的参数,返回值却是没有小数位的整数值,郁闷坏了。查了半天资料,原来需要指定小数位。 具体书写如下: cmd.Parameters.Add(“@Percent”, SqlDbType.Decimal).Direction = ParameterDirection.Output
; } if((TypeInfo=="bigint")||(TypeInfo=="system.int64")) { return SqlDbType.BigInt; } return SqlDbType.Image; } if((TypeInfo=="int")||(TypeInfo=="system.int32")) { return SqlDbType.Int SqlDbType.NText; } if(TypeInfo=="nvarchar") { return SqlDbType.NVarChar; } if((TypeInfo ")) { return SqlDbType.SmallInt; } if(TypeInfo=="smallmoney") { return SqlDbType.SmallMoney return SqlDbType.VarBinary; } if(TypeInfo=="variant") { return SqlDbType.Variant;
,200), new SqlParameter("@pass_content",SqlDbType.VarChar,5000), new ",SqlDbType.VarChar,5000), new SqlParameter("@pass_cost",SqlDbType.Decimal), new SqlParameter("@pass_company",SqlDbType.VarChar,100), new SqlParameter("@is_start" ,SqlDbType.Int,4), new SqlParameter("@remark",SqlDbType.VarChar,5000), new SqlParameter("@operatorType",SqlDbType.VarChar,50), new SqlParameter("@pass_id",SqlDbType.Int
通过反编,发现SqlDbType和DbType是通过一个叫MetaType的类实现的私通(这个类是internal的,所以外部不能访问),而SqlValue和Value则是通过SqlParameter类中的一个私有字段 PS:其实MSDN中有提到SqlDbType和DbType之间是有联动的,参看http://msdn.microsoft.com/zh-cn/library/system.data.sqlclient.sqlparameter.dbtype (v=vs.80).aspx 关于SqlDbType和DbType的对应关系,可参看此表(但其中SqlDbType其实不是指SqlDbType枚举,但意思是明白的):http://msdn.microsoft.com
= SqlDbType.Structured; tvpOrderDetail.SqlDbType = SqlDbType.Structured; = SqlDbType.Structured; tvpDetail.TypeName = "dbo.OrderDetail$Udt"; new SqlMetaData("OrderedAt", SqlDbType.DateTime)); foreach(OrderItem item in this.ToArray new SqlMetaData("ProductId", SqlDbType.Int), new SqlMetaData("Quantity ", SqlDbType.Int), new SqlMetaData("Price", SqlDbType.Money));
conn.Open(); SqlParameter sqlparm = new SqlParameter("@AggregationRootId", System.Data.SqlDbType.UniqueIdentifier sqlparams = new SqlParameter[7]; sqlparams[0] = new SqlParameter("@Id", System.Data.SqlDbType.UniqueIdentifier sqlparams[3] = new SqlParameter("@AssemblyQualifiedCommandAndEventType", System.Data.SqlDbType.NVarChar domaineventobject.CreateDate; sqlparams[5] = new SqlParameter("@Version", System.Data.SqlDbType.Int Value = domaineventobject.Version; sqlparams[6] = new SqlParameter("@Data", System.Data.SqlDbType.VarBinary
,32), new SqlParameter ("@UpdateValue",SqlDbType .NChar,50), new SqlParameter ("@InsertValue",SqlDbType.NChar ,50)}; paras[0].Value = "2"; ,32), new SqlParameter ("@UpdateValue",SqlDbType .NChar,50)}; ,32), new SqlParameter ("@InsertValue",SqlDbType.NChar ,50)} ,32), new SqlParameter ("@UpdateValue",SqlDbType .NChar,50)};
tvpOrderDetail = cmd.Parameters.AddWithValue("@OrderDetails", dtOrderDetail); tvpOrderItem.SqlDbType = SqlDbType.Structured; tvpOrderDetail.SqlDbType = SqlDbType.Structured; tvpDetail = readCommand.Parameters.AddWithValue("@tvpDetail", dtOrderDetail); tvpDetail.SqlDbType = SqlDbType.Structured; tvpDetail.TypeName = "dbo.OrderDetail$Udt"; SqlDataReader
,6); cmd.Parameters.Add("@Name",SqlDbType.Nvarchar,5); cmd.Parameters.Add("@Sex",SqlDbType.Nchar, 1); cmd.Parameters.Add("@Age",SqlDbType.SmallInt); cmd.Parameters.Add("@Address",SqlDbType.NvarChar 属性 说明 ParameterName 参数的名称,在与参数化Sql中出现的参数名要对应 SqlDbType 参数的数据类型 IsNullable 该值指示参数是否接受空值 Size 获取或设置参数数据的最大大小 ; //如:cmd.Parameters.Add("@p_psnName",SqlDbType.NVarChar).Value=txtName.Text //执行存储过程 cmd.ExecuteNonQuery =ParameterDirection.Output; SqlParametercres=cmd.Parameters.Add("@return",SqlDbType.Int); cres.Direction
public SqlParameter(string parameterName, object value); public SqlParameter(string parameterName, SqlDbType dbType); SqlDbType中有一个常量BigInt = 0,当传入参数0时,它会把它看成一个SqlDbType, 因此运行程序会报错,提示没有提供参数, 解决办法: 1、可以使用数据转型来操作
cmd.CommandType = CommandType.StoredProcedure; 10 11 cmd.Parameters.Add("@OrderDate", SqlDbType.DateTime cmd.CommandType = CommandType.StoredProcedure; 10 11 cmd.Parameters.Add("@ProductID", SqlDbType.Int , 4).Value = 21; 12 cmd.Parameters.Add("@Total", SqlDbType.Money).Direction = ParameterDirection.Output cmd.CommandType = CommandType.StoredProcedure; 10 11 cmd.Parameters.Add("@ReturnValue", SqlDbType.Int 4).Direction = ParameterDirection.ReturnValue; 12 cmd.Parameters.Add("@EmployeeID", SqlDbType.Int
sampParm.Direction = ParameterDirection.ReturnValue; sampParm = sampleCMD.Parameters.Add(“@InputParm”, SqlDbType.NVarChar , 12); sampParm.Value = “Sample Value”; sampParm = sampleCMD.Parameters.Add(“@OutputParm”, SqlDbType.NVarChar ; cmd.CommandText=”sp_Dates_ByEmployeeId”; SqlParameter parInput = cmd.Parameters.Add(“@EmployeeId”,SqlDbType.Int parInput.Value = Convert.ToInt32(txtEmpId2.Text); SqlParameter parOutput2 = cmd.Parameters.Add(“@LDate”,SqlDbType.DateTime parOutput2.Direction = ParameterDirection.Output; SqlParameter parOutput1 = cmd.Parameters.Add(“@EDate”,SqlDbType.DateTime
SqlCommand的属性为存储过程 command.CommandType = CommandType.StoredProcedure; command.Parameters.Add("@CategoryID", SqlDbType.Int , 4); command.Parameters.Add("@RoleName", SqlDbType.NVarChar, 10); command.Parameters.Add("@Description ", SqlDbType.NVarChar, 50); command.Parameters.Add("@RoleID", SqlDbType.Int, 4); // 返回值 command.Parameters.Add ("Returnvalue", SqlDbType.Int, 4, // Size ParameterDirection.Returnvalue, false, // is nullable 0, /
string ParameterName,int ParameterValue) { cm.Parameters.Add(ParameterName,SqlDbType.Int ParameterName,double ParameterValue ) { cm.Parameters.Add(ParameterName,SqlDbType.Float ParameterName,string ParameterValue) { cm.Parameters.Add(ParameterName,SqlDbType.NText ParameterName,bool ParameterValue) { cm.Parameters.Add(ParameterName,SqlDbType.Bit break; case ParameterKind.Bit : cm.Parameters.Add(ParameterName,SqlDbType.Bit
CityID,@CountyID,@Introductions,@RegisterDate)"; SqlParameter paramUserID = new SqlParameter("@UserID", SqlDbType.Int ); paramUserID.Value = osuser.UserID; SqlParameter paramPersonID = new SqlParameter("@PersonID", SqlDbType.Int paramNikeName.Value = osuser.NikeName; SqlParameter paramProvinceID = new SqlParameter("@ProvinceID", SqlDbType.Int ; paramProvinceID.Value = osuser.ProvinceID; SqlParameter paramCityID = new SqlParameter("@CityID", SqlDbType.Int ); paramCityID.Value = osuser.CityID; SqlParameter paramCountyID = new SqlParameter("@CountyID", SqlDbType.Int
sqlconn)) { SqlParameter parameter = new SqlParameter("@ExceptionID", SqlDbType.VarChar sqlcomm.Parameters.Add(parameter); parameter = new SqlParameter("@LogID", SqlDbType.VarChar sqlcomm.Parameters.Add(parameter); parameter = new SqlParameter("@ExeSQL", SqlDbType.VarChar sqlcomm.Parameters.Add(parameter); parameter = new SqlParameter("@FromSystem", SqlDbType.Int sqlcomm.Parameters.Add(parameter); parameter = new SqlParameter("@Info", SqlDbType.VarChar
ParameterValue) { ((System.Data.SqlClient.SqlCommand)cm).Parameters.Add(ParameterName,SqlDbType.Int int size) { ((System.Data.SqlClient.SqlCommand)cm).Parameters.Add(ParameterName, SqlDbType.NVarChar ParameterValue) { ((System.Data.SqlClient.SqlCommand)cm).Parameters.Add(ParameterName, SqlDbType.NText ParameterValue) { ((System.Data.SqlClient.SqlCommand)cm).Parameters.Add(ParameterName, SqlDbType.Bit ParameterKind.Int : ((System.Data.SqlClient.SqlCommand)cm).Parameters.Add(ParameterName, SqlDbType.Int
,@Introductions,@RegisterDate)"; SqlParameter paramUserID = new SqlParameter("@UserID", SqlDbType.Int paramUserID.Value = osuser.UserID; SqlParameter paramPersonID = new SqlParameter("@PersonID", SqlDbType.Int paramCityID.Value = osuser.CityID; SqlParameter paramCountyID = new SqlParameter("@CountyID", SqlDbType.Int = osuser.CountyID; SqlParameter paramIntroductions = new SqlParameter("@Introductions", SqlDbType.NText 2、没有使用SqlDbType来设定参数类型,因为他带有SqlClient的影子。 3、没有写参数化的SQL,这样减少出现bug的机会,字段名如果有变化,也减少了修改点。
typeof(Int32))){return SqlDbType.Int;} if(s.Equals(typeof(Int16))){return SqlDbType.SmallInt;} if(s.Equals(typeof(Int64))){return SqlDbType.BigInt;} if(s.Equals(typeof(Decimal))){return SqlDbType.Decimal ;} if(s.Equals(typeof(Single))){return SqlDbType.Real;} if(s.Equals(typeof(Double))){return SqlDbType.Float ;} if(s.Equals(typeof(UInt16))){return SqlDbType.Int;} if(s.Equals(typeof(UInt32))){return SqlDbType.Int return SqlDbType.VarBinary;} if(s.Equals(typeof(Object))){return SqlDbType.Variant;} throw new
CommandType.Text; SqlParameter CompanyName = sqlCmd.Parameters.Add ("@CompanyName", SqlDbType.VarChar ).Replace(")", ")"); SqlParameter CompanyInfo = sqlCmd.Parameters.Add ("@CompanyInfo", SqlDbType.VarChar 4000); CompanyInfo.Value = ""; SqlParameter Note = sqlCmd.Parameters.Add ("@Note", SqlDbType.VarChar CommandType.Text; SqlParameter CompanyId = sqlCmd.Parameters.Add ("@CompanyId", SqlDbType.Int = this.LastID; SqlParameter PositionName = sqlCmd.Parameters.Add ("@PositionName", SqlDbType.VarChar