2017-05-30 2 views
0

Hier ist die SQLite-Abfrage, die ich mit ganzzahligen Werten bin Bindung:SQLite Mismatch Fehler in Wert Bindung

Id ist der Integer-Typ in der Tabelle.

SELECT Id, FName,SortString, 1 as OrderStr 
FROM CTable 
WHERE ? = Id AND SortString glob '[A-Z]*'  
UNION 
SELECT Id, FName,SortString, 2 as OrderStr 
FROM CTable 
WHERE ? = Id AND SortString NOT glob '[A-Z]*' 
ORDER BY OrderStr, FName DESC LIMIT ? OFFSET ? 

sqlite3_stmt * c_list_x = NULL; sqlite3_prepare_v2 ist erfolgreich. Wenn ich jetzt wie folgt bin:

int Id = 1; 

sqlite3_bind_int(c_list_x ,1, Id); 
sqlite3_bind_int(c_list_x ,2, Id); 

int Ergebnis = sqlite3_step (c_list_x);

Ergebnis ist 20 (SQLite Mismatch: Datentyp Mismatch)

Warum erhalte ich diese auch nach dem ganzzahligen Wert verbindlich?
Kann mir jemand helfen, das gewünschte Ergebnis zu bekommen?

+0

Warum vergleichen Sie eine ganze Zahl mit einer Zeichenfolge? –

+0

@GordonLinoff Ich habe dich nicht verstanden. Wo vergleiche ich String mit einem Int? –

+0

Ich habe sogar versucht, Casting: sqlite3_bind_int (c_list_x, 1, static_cast (Id)); aber kein Glück. –

Antwort

0

Gelöst! LIMIT- und OFFSET-Werte wurden während der Bindung nicht erkannt. Danke :)