我找了半天,没有找到我没有声明的变量啊,只能求助了,断点也看不出来哪里有问题。 StringBuilder strSql = new StringBuilder(); strSql.Append("insert into YyInfo("); strSql.Append("IfConcel,SPID,CgDay,CgTime,PeopNum,UnitName,AddressID,YyName,YyPhoneNum,UserID"); strSql.Append(") values ("); strSql.Append("@IfConcel,@SPID,@CgDay,@CgTime,@PeopNum,@UnitName,@AddressID,@YyName,@YyPhoneNum,@UserID"); strSql.Append(") "); strSql.Append(";"); //strSql.Append(";select @@IDENTITY"); SqlParameter[] parameters = { new SqlParameter("@IfConcel", SqlDbType.Int,4) , new SqlParameter("@SPID", SqlDbType.Int,4) , new SqlParameter("@CgDay", SqlDbType.DateTime) , new SqlParameter("@CgTime", SqlDbType.Char,20) , new SqlParameter("@PeopNum", SqlDbType.Int,4) , new SqlParameter("@UnitName", SqlDbType.Char,50) , new SqlParameter("@AddressID", SqlDbType.Int,4) , new SqlParameter("@YyName", SqlDbType.Char,50) , new SqlParameter("@YyPhoneNum", SqlDbType.Char,20) , new SqlParameter("@UserID", SqlDbType.Int,4) }; parameters[0].Value = model.IfConcel; parameters[1].Value = model.SPID; parameters[2].Value = model.CgDay; parameters[3].Value = model.CgTime; parameters[4].Value = model.PeopNum; parameters[5].Value = model.UnitName; parameters[6].Value = model.AddressID; parameters[7].Value = model.YyName; parameters[8].Value = model.YyPhoneNum; parameters[9].Value = model.UserID; object obj = SQLHelper.GetSingle(strSql.ToString(), parameters); if (obj == null) { return 0; } else { return Convert.ToInt32(obj); } |
|
看SQLHelper.GetSingle用了parameters没
|
|
这个要看你的GetSingle方法吧
|
|
GetSingle看名字也是取数据
你应该用ExecuteNonQuery对应的方法 |
|
public static object GetSingle(string SQLString, params SqlParameter[] cmdParms) { using (SqlConnection connection = new SqlConnection(connectionString)) { using (SqlCommand cmd = new SqlCommand()) { try { cmd.Parameters.Clear(); PrepareCommand(cmd, connection, null, SQLString, cmdParms); object obj = cmd.ExecuteScalar(); cmd.Parameters.Clear(); if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value))) { return null; } else { return obj; } } catch (System.Data.SqlClient.SqlException e) { throw e; } } } } |
|
之前更新数据也报错,调了两下也没改啥,自己就好了
|
|
还是要找到原因,不然系统隐藏着不稳定的bug。 PrepareCommand方法的代码贴出来~ |
|
private static void PrepareCommand(SqlCommand cmd, SqlConnection conn, SqlTransaction trans, string cmdText, SqlParameter[] cmdParms) { if (conn.State != ConnectionState.Open) conn.Open(); cmd.Connection = conn; cmd.CommandText = cmdText; if (trans != null) cmd.Transaction = trans; cmd.CommandType = CommandType.Text;//cmdType; if (cmdParms != null) { //cmd.Parameters.Clear(); foreach (SqlParameter parameter in cmdParms) { if ((parameter.Direction == ParameterDirection.InputOutput || parameter.Direction == ParameterDirection.Input) && (parameter.Value == null)) { parameter.Value = DBNull.Value; } cmd.Parameters.Add(parameter); cmd.Parameters.Clear(); } } |
|
cmd.Parameters.Add(parameter);
cmd.Parameters.Clear(); 我晕! |
|
把这个去了更新时候报错 |
|
cmd.Parameters.Clear();
你明不明白这句的作用? |
|
+1 |
|
报这个错误 |
|
明白是明白,但是去掉以后就报Sys.WebForms.PageRequestManagerServerErrorException: 另一个 SqlParameterCollection 中已包含 SqlParameter。 |
|
去掉cmd.Parameters.Clear();更新的时候报Sys.WebForms.PageRequestManagerServerErrorException: 另一个 SqlParameterCollection 中已包含 SqlParameter。
不去掉的时候新增报 必须声明标量变量 “@IfConcel” |
|
哥醉了。。。 |
|
public static int ExecuteSql(string SQLString, params SqlParameter[] cmdParms) { using (SqlConnection connection = new SqlConnection(connectionString)) { using (SqlCommand cmd = new SqlCommand()) { try { PrepareCommand(cmd, connection, null, SQLString, cmdParms); cmd.Parameters.AddRange(cmdParms);//这里报错 int rows = cmd.ExecuteNonQuery(); |
|
20分 |
哥是真醉了! |
非常感谢你的帮助,我把这句话注释了,就好了,是我写的时候没有注意,调试的时候就忘记了。谢谢 |
|
结贴了,为啥没显示分数给谁了
|