为什么通过ODBC C#进行参数化不能绑定?

时间:2016-05-31 21:36:59

标签: c# odbc parameterized

我在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

1 个答案:

答案 0 :(得分:2)

你的SQL应该是

dbCommand.CommandText = "SELECT col2 FROM TableName WHERE ID = @ID";

因为您的参数名称为" @ ID"