我在C#中找到了通过ODBC进行参数化的这个How to bind parameters via ODBC C#?示例,但在我的代码CommandText中仍然使用"?"并返回错误 - 预计会出现问题。
这是我的代码:
string variable = SVariablaKlas.ToUpper(); //this is simple var like 123
Conn odbc = new Conn();
odbc.db.Open(); //this works fine -> connection is established
OdbcCommand dbCommand = odbc.db.CreateCommand();
dbCommand.CommandText = "";
if (a)
{
dbCommand.CommandText = "SELECT col1 FROM TableName WHERE ID = ?";
} else if (b)
{
dbCommand.CommandText = "SELECT col2 FROM TableName WHERE ID = ?";
}
dbCommand.Parameters.ADD("@ID", OdbcType.Char).Value = variable;
//or if I try this: ...Parameters.ADD(new OdbcParameter(string.Empty, variable);
OdbcDataReader dbReader = dbCommand.ExecuteReader();
...
在我的" Parameters.ADD"的情况下,我的dbCommand.CommandText将是" SELECT col1 FROM TableName WHERE ID =?"然后我会得到错误:ERROR [HY000]附近" WHERE":语法错误(1)
知道哪里有问题?
对于数据库我正在使用SQLite3和ODBC驱动程序SQLite3 ODBC驱动程序,版本0.9993.00.00
答案 0 :(得分:2)
你的SQL应该是
dbCommand.CommandText = "SELECT col2 FROM TableName WHERE ID = @ID";
因为您的参数名称为" @ ID"