c# - SqlParameter无法与INSERT语句一起使用

标签 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'的第一次机会异常


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

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


我究竟做错了什么?

最佳答案

您创建了参数,但实际上并没有以任何方式将其与命令关联。您需要将参数添加到命令的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();

关于c# - SqlParameter无法与INSERT语句一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17372579/

相关文章:

c# - 当应用程序通过 Windows API 全屏显示时,菜单不合适

.net - 有什么理由要使用System.Uri吗?

c# - 在同一个存储过程中选择查询和更新查询

sql-server - SQL Begin Try/Catch 会不会对我撒谎(在分析器中)?

C# - 与 SQL Server 2005 的公共(public)全局连接

c# - asp.net Ado 存储过程字段

C#:触发事件时的不同语法形式

c# - Paypal 返回页面/成功页面问题

c# - OpenTK:为什么 GraphicsMode 不可用?

c# - 是否可以将 `ref bool` 转换为 CancellationToken?