“SqlParameterCollection 仅接受非空的 SqlParameter 类型对象,不接受 String 对象“
少定义了一个 UserId 就按你前面那样写就行了,加上去 cmd.Parameters.Add(“@UserId “,SqlDbType.VarChar,50); 还有一个错误是: 引号的问题: cmd.Parameters.Add(“@UserEmail,SqlDbType.VarChar,50“); 应是: cmd.Parameters.Add(“@UserEmail“,SqlDbType.VarChar,50); 最后你的数据库是不是就是这几个字段呢? 如果不完全符合,应该写成 UserId=@UserId ,---- 我自己有一个,你可以参考一下: string sql1 = “insert into TA1(xm,lv) values(@xm,@lv)“ ; System.Data.SqlClient.SqlParameter sqlparam = new System.Data.SqlClient.SqlParameter; sqlparam = new System.Data.SqlClient.SqlParameter(“@xm“,System.Data.SqlDbType.VarChar,50); sqlparam.Value = “qimin1029“; sqlparam = new System.Data.SqlClient.SqlParameter(“@lv“,System.Data.SqlDbType.Decimal); sqlparam.Value = “0.25“; int dd = 0; string erradssdf = this.ExecSql_EffectRowCount(sql1,sqlparam,System.Data.CommandType.Text,ref dd); public string ExecSql_EffectRowCount(string sql, System.Data.SqlClient.SqlParameter sqlParams, System.Data.CommandType cmdType, ref int effectRowCount) { string res = ““; System.Data.SqlClient.SqlConnection cnn = new System.Data.SqlClient.SqlConnection(this.constring); try { cnn.Open(); System.Data.SqlClient.SqlTransaction trans = cnn.BeginTransaction(); System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand(sql, cnn); cmd.Transaction = trans; cmd.CommandType = cmdType; try { if(sqlParams != null) { foreach(System.Data.SqlClient.SqlParameter p in sqlParams) { cmd.Parameters.Add(p); } } effectRowCount = cmd.ExecuteNonQuery(); trans.Commit(); } catch(Exception e1) { trans.Rollback();//回滚事务 res = e1.Message; } } catch(Exception e) { res = e.Message; } finally { cnn.Close(); cnn.Dispose(); } return res; }
decimal是什么数据类型
decimal是MySQL中存在的精准数据类型。MySQL中的数据类型有:float,double等非精准数据类型和decimal这种精准。区别:float,double等非精准类型,在DB中保存的是近似值。Decimal则以字符串的形式保存精确的原始数值。
扩展资料
对SQL Server而言,decimal和numeric视为相同的类型,它们可用来保存具有小数点而且数值确定的数值。它们不像float和real是用来保存近似值。此类型的列其声明方式为decima[(p[,s])]或numericl[(p[,s])]。其中p是此数值全部的位数,含小数部分但不包括小数点,s则是小数的位数。-sqlparameter
p值称为此数值的精确度,例如:decimal(10,3)表示共有7位整数3位小数,此例的精确度为10位。此类型的列可保存的值范围为1038-1到-1038-1之间。其占用存储空间依精确度不同而不同,下表给出Decimal类型变量精确度和占用空间的关系。-类
double是什么数据类型
double是计算机语言的一个类型,即双精度浮点型。
此数据类型与单精度数据类型(float)相似,但精确度比float高,编译时所占的内存空间依不同的编译器而有所不同,通常情况,单精度浮点数占4字节(32位)内存空间,其数值范围为-3.4E38~3.4E+38。-sqlparameter
双精度型占8 个字节(64位)内存空间,其数值范围为-1.7E308~1.7E+308。声明double 类型的变量:double puotient。初始化double 类型的变量:puotient = 5.621456873;double puotinet = 5.62。-类
浮点型数据
1、float型
编译系统为每一个float型变量分配4个字节,数值以规范化的二进制数指数形式存放在存储单元中。
2、double型
为了扩大能表示的数值范围,用8个字节存储一个double型数据,可以得到15位有效数字。
3、long double型
不同的编译系统对long double型的处理方法不同,Visual C++6.0对long double型和double一样处理,分配8个字节。