我想将新记录插入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);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句