我想将新记录插入SQL Server 2008数据库。某些列值为NULL,因此出现错误。这是我正在使用的SQL查询:
INSERT INTO Products VALUES(NEWID(), '" + cur.name + "', '" + cur.type + "');
如果我的值为NULL,则会导致错误,因为它显示为:NEWID(), , ;
我可以做一堆if语句,但必须有一种更有效的方法。非常感谢提前。
答案 0 :(得分: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);
答案 1 :(得分:0)
如果您确实要将null
插入数据库,请使用DBNull.Value