2016-05-31 71 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

相關問題