我想将新记录插入到 SQL Server 2008 数据库中。一些列值是 NULL,所以我得到一个错误。这是我正在使用的 SQL 查询:
INSERT INTO Products VALUES(NEWID(), '" + cur.name + "', '" + cur.type + "');
如果我的值为 NULL,则会导致错误,因为它显示为:NEWID(), , ;
我可以做一堆 if 语句,但必须有更有效的方法来做。提前谢谢了。
我想将新记录插入到 SQL Server 2008 数据库中。一些列值是 NULL,所以我得到一个错误。这是我正在使用的 SQL 查询:
INSERT INTO Products VALUES(NEWID(), '" + cur.name + "', '" + cur.type + "');
如果我的值为 NULL,则会导致错误,因为它显示为:NEWID(), , ;
我可以做一堆 if 语句,但必须有更有效的方法来做。提前谢谢了。
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);
如果您真的想将 anull
插入数据库,请使用DBNull.Value