我有一个SQL查询,如下所示
String S = Editor1.Content.ToString();
Response.Write(S);
string sql = "insert into testcase.ishan(nmae,orders) VALUES ('9',@S)";
OdbcCommand cmd = new OdbcCommand(sql, myConn);
cmd.Parameters.AddWithValue("@S", S);
cmd.ExecuteNonQuery();
错误:Column 'orders' cannot be null at System.Data.Odbc.OdbcConnection.HandleError
答案 0 :(得分:3)
最好使用类似的东西:
var sqlCommandText = "insert into testcase.ishan(nmae,orders) VALUES ('9', @S)";
using (var connection = new SqlConnection())
{
using (var command = new SqlCommand(sqlCommandText , connection))
{
command.Parameters.AddWithValue("@S", S);
command.ExecuteNonQuery();
}
}
参数的使用会阻止SQL injection。我相信安德鲁斯解决方案没有。
如果需要,ExecuteNonQuery()将返回受影响的行数。
using语句将负责正确处理连接,因此之后您再也没有打开连接。这是因为SqlConnection实现了IDisposable。