我是C#的新手并且可以使用一些指导,谷歌搜索已经建议了许多不同的东西,但没有一个我可以开始工作。我已经阻止了数据源详细信息等,但这些在代码中是有效的
当我点击我的"保存按钮"
时,下面是我的整个代码public void testLoadAuditBindingNavigatorSaveItem_Click(object sender, EventArgs e)
{
System.Data.SqlClient.SqlConnection sqlConnection1 =
new System.Data.SqlClient.SqlConnection("Data Source=XXXXX; Initial Catalog=XXXXX; User ID=XXXXX;Password=XXXXX");
System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand();
cmd.CommandType = System.Data.CommandType.Text;
cmd.CommandText = "INSERT INTO testloadaudit (item_type,load_id,UserId, Comment, dateamended) VALUES (@item_type, @load_id, @UserId, @Comment, @dateamended)";
cmd.Connection = sqlConnection1;
sqlConnection1.Open();
cmd.ExecuteNonQuery();
sqlConnection1.Close();
}
我收到此错误
类型' System.Data.SqlClient.SqlException'未处理的异常 发生在System.Data.dll中 附加信息:必须声明标量变量" @ item_type"。
如果有人可以建议如何将上述插入物放入表格中,那将是很好的。
答案 0 :(得分:5)
您在查询文字中使用了参数,但尚未将其添加到SqlCommand
。
在执行查询之前,您需要为每个参数添加这样的代码:
cmd.Parameters.Add("@item_type", SqlDbType.????);
cmd.Parameters["@item_Type"].Value = ???
您应为每个参数指定适当的类型和值。
答案 1 :(得分:0)
您的SQL查询具有期望值的参数:
... VALUES (@item_type, @load_id, @UserId, @Comment, @dateamended)
所以你需要提供这些值。你实际上插入到数据库中的是什么?您提供的值决定了这一点。例如:
cmd.Parameters.AddWithValue("@item_type", "some value");
答案 2 :(得分:0)
您必须添加如下参数:
cmd.Parameters.Add(new SqlParameter() { Name = "@item_type", SqlDbType = /* Use your DB Type here */, Value = /* Add your value here */ });
答案 3 :(得分:0)
您的查询未添加实际parameter值。您可以使用SqlParameterCollection.AddWithValue()
添加它:
cmd.CommandText = "INSERT INTO testloadaudit (item_type,load_id,UserId, Comment, dateamended) VALUES (@item_type, @load_id, @UserId, @Comment, @dateamended)";
cmd.Connection = sqlConnection1;
cmd.Parameters.AddWithValue("@item_type", yourActualItemTypeValue);
// add here values for each other parameters
sqlConnection1.Open();
cmd.ExecuteNonQuery();