如果某些值为null,如何插入SQL

时间:2013-11-11 10:10:33

标签: c# sql-server-2008

我想将新记录插入SQL Server 2008数据库。某些列值为NULL,因此出现错误。这是我正在使用的SQL查询:

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

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

我可以做一堆if语句,但必须有一种更有效的方法。非常感谢提前。

2 个答案:

答案 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