2016-05-31 15 views
0

Ich habe dieses How to bind parameters via ODBC C#? Beispiel für die Parametrisierung über ODBC in C#, aber in meinem Code CommandText bleibt mit "?" und gibt Fehler zurück - whitch wird erwartet.Warum ist die Parametrierung über ODBC C# nicht bindend?

Hier ist mein Code:

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(); 

... 

In meinen beiden Fällen von "Parameters.ADD", würde mein dbCommand.CommandText sein "col1 FROM Tablename WHERE ID = SELECT?" und dann würde ich einen Fehler bekommen: FEHLER [HY000] in der Nähe von "WO": Syntaxfehler (1)

Irgendeine Idee wo ist das Problem?

für Datenbank I SQLite3 und ODBC-Treiber SQLite3 ODBC-Treiber verwenden, Version 0.9993.00.00

Antwort

2

sollte Ihre SQL

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

sein, da Ihre Parameter als "@ID" genannt

+0

Ja , Danke! – DaniKR