2016-05-31 73 views
0

我发现这个How to bind parameters via ODBC C#?如何通过ODBC在C#中进行参数化,但在我的代码CommandText中保留“?”并返回错误 - 预期。为什么通过ODBC C#参数化不能绑定?

这里是我的代码:

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表名WHERE ID =?”然后我会得到错误:错误[HY000]附近“WHERE”:语法错误(1)

任何想法哪里有问题?

对于我使用的SQLite3和ODBC驱动程序sqlite3的ODBC驱动程序的数据库,版本0.9993.00.00

回答

2

你的SQL应该是

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

因为你的参数被命名为 “@ID”

+0

是, 谢谢! – DaniKR

相关问题