2

我在这里发疯了,有人可以告诉我这段代码有什么问题吗

con.Open();
cmd = new SqlCommand("INSERT INTO COUNTERS(COUNTER_START, COUNTER_CURRENT, COUNTER_NEXT, COUNTER_TYPE, COUNTER_DATE_CREATED, COUNTER_TIME_CREATED, COUNTER_CREATED_BY) " +
                    "VALUES(@counter_start, @counter_current, @counter_next, @counter_type, @date, @time, @user)", con);

cmd.Parameters.Add("@counter_start", SqlDbType.Int).Value = counter_start.Text;
cmd.Parameters.Add("@counter_current", SqlDbType.Int).Value = counter_current.Text;
cmd.Parameters.Add("@counter_next", SqlDbType.Int).Value = counter_next.Text;
cmd.Parameters.Add("@counter_type", SqlDbType.VarChar, 10).Value = counter_type.Text;
cmd.Parameters.Add("@date", SqlDbType.VarChar, 20).Value = date;
cmd.Parameters.Add("@time", SqlDbType.VarChar, 20).Value = time;
cmd.Parameters.Add("@user", SqlDbType.VarChar, 50).Value = user;

cmd.ExecuteNonQuery();
cmd.Dispose();
con.Close();

我收到此错误

参数化查询 '(@counter_start int,@counter_current int,@counter_next int,@coun' 需要未提供的参数 '@user'

任何输入都会非常感激。

4

1 回答 1

2

您可以尝试调试应用程序并查看 variable 保存的值user。我认为user你提供的是空的。如果您使用的是 C# 4.0,请尝试

 cmd.Parameters.Add("@user", SqlDbType.VarChar, 50).Value = user ?? DBNull.Value;

或者对于早期版本的 C#

 cmd.Parameters.Add("@user", SqlDbType.VarChar, 50).Value = user != null ? user : DBNull.Value;

如果您想要一个空字符串而string.Empty不是DBNull.ValueDBNull

于 2012-07-27T03:40:47.277 回答