0

我想将新记录插入到 SQL Server 2008 数据库中。一些列值是 NULL,所以我得到一个错误。这是我正在使用的 SQL 查询:

INSERT INTO Products VALUES(NEWID(), '" + cur.name + "', '" + cur.type + "');

如果我的值为 NULL,则会导致错误,因为它显示为:NEWID(), , ;

我可以做一堆 if 语句,但必须有更有效的方法来做。提前谢谢了。

4

2 回答 2

4

C# 似乎无法将所有空值正确转换为其等效的 DBNull 值。

尝试以下内容

string sql = "INSERT INTO Products 
VALUES(NEWID(), @cName, @cType)";

SqlCommand cmd = new SqlCommand(sql, conn);
cmd.Parameters.AddWithValue("@cName", cur.name == null ? (object)DBNull.Value : cur.name);
cmd.Parameters.AddWithValue("@cName", cur.type == null ? (object)DBNull.Value : cur.type);

cmd.Execute();

您当前的查询很容易出现 sql 注入,因此使用参数化查询是更好的解决方案。它还允许空值检查。

或者,如果您需要该值为空,则使用类似这样的内容

cmd.Parameters.AddWithValue("@cName", cur.type == null ? "" : cur.type);
于 2013-11-11T10:15:38.120 回答
0

如果您真的想将 anull插入数据库,请使用DBNull.Value

于 2013-11-11T10:15:14.483 回答