C# SQL查询错误-“;列不能为空";

C# SQL查询错误-“;列不能为空";,c#,asp.net,sql,mysql,C#,Asp.net,Sql,Mysql,我有一个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("@

我有一个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时,.NET Framework ODBC数据提供程序不支持将命名参数传递给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(); 

这将对你有帮助

cmd.Parameters.Add("@S", OdbcType.Char, S);

我已经在字符串中有了值。但是它没有进入sql查询。是列名真正的nmae还是它实际的名称?以及如何定义“?”的值。query如何知道是什么?@user:向集合中添加一个参数。它将从添加的顺序知道:添加的第一个参数是第一个
,等等。它在我复制的引号中。与“System.Data.Odbc.OdbcParameterCollection.Add(string,System.Data.Odbc.OdbcType,int)”匹配的最佳重载方法具有一些无效参数