SqlParameter无法使用INSERT语句

时间:2013-06-28 19:49:52

标签: c# .net sql-server visual-studio

尝试使用参数将值插入SQL Server数据库时,出现以下错误。

SqlParameter Param1 = new SqlParameter("@test", SqlDbType.VarChar);
Param1.Value = "test";

SqlCommand AddtoDb = new SqlCommand("INSERT INTO [temp] VALUES (@test)", conn);
AddtoDb.ExecuteNonQuery();

这是我得到的错误:

  

System.Data.dll中出现'System.Data.SqlClient.SqlException'类型的第一次机会异常

数据库只有一列接受varChar(50)。我知道连接正常,因为如果我执行类似的操作,数据库会收到输入:

SqlCommand AddtoDb = new SqlCommand("INSERT INTO [temp] VALUES ('test')", conn);
AddtoDb.ExecuteNonQuery();

我做错了什么?

2 个答案:

答案 0 :(得分:8)

您创建了参数,但实际上并未以任何方式将其与命令相关联。您需要将参数添加到命令的Parameters集合中:

SqlCommand AddtoDb = new SqlCommand("INSERT INTO [temp] VALUES (@test)", conn);
SqlParameter Param1 = new SqlParameter("@test", SqlDbType.VarChar);
Param1.Value = "test";
AddtoDb.Parameters.Add(Param1);
AddtoDb.ExecuteNonQuery();

或更简单:

SqlCommand AddtoDb = new SqlCommand("INSERT INTO [temp] VALUES (@test)", conn);
AddtoDb.Parameters.AddWithValue("@test", "test");
AddtoDb.ExecuteNonQuery();

答案 1 :(得分:2)

您没有将SqlParameter对象与SqlCommand对象关联。

尝试在第3行和第4行之间添加此行:

AddtoDb.Parameters.Add(Param1);