我有一个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();
错误:System.Data.Odbc.OdbcConnection.HandleError上的“订单”列不能为空
从手册:
当CommandType设置为Text时,用于ODBC的.NET Framework数据提供程序不支持将命名参数传递给SQL语句或OdbcCommand调用的存储过程。在这两种情况下,均使用问号(?)占位符。例如: SELECT * FROM Customers WHERE CustomerID = ? 将OdbcParameter对象添加到OdbcParameterCollection的顺序必须直接对应于命令文本中参数的问号占位符的位置。
当CommandType设置为Text时,用于ODBC的.NET Framework数据提供程序不支持将命名参数传递给SQL语句或OdbcCommand调用的存储过程。在这两种情况下,均使用问号(?)占位符。例如:
SELECT * FROM Customers WHERE CustomerID = ?
将OdbcParameter对象添加到OdbcParameterCollection的顺序必须直接对应于命令文本中参数的问号占位符的位置。
用这个:
string sql = "insert into testcase.ishan(nmae,orders) VALUES ('9', ?)"; OdbcCommand cmd = new OdbcCommand(sql, myConn); cmd.Parameters.AddWithValue("you_can_write_anything_here_its_ignored_anyway", S); cmd.ExecuteNonQuery();