1

尝试使用参数将值插入 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”类型的第一次机会异常

数据库只有 1 列接受varChar(50). 我知道连接正在工作,因为如果我执行以下操作,数据库会收到输入:

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

我究竟做错了什么?

4

2 回答 2

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();
于 2013-06-28T19:51:16.283 回答
2

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

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

AddtoDb.Parameters.Add(Param1);
于 2013-06-28T19:52:49.107 回答