2016-06-27 16 views
0

Ich habe eine Tabelle in SQLITE:Fehler in ausgewählten Datensatz aus SQLite Tabelle

CREATE TABLE "INVENTORY" (
    "product" VARCHAR NOT NULL, 
    "version" VARCHAR NOT NULL, 
    "productionDate" VARCHAR NOT NULL, 
    "order" VARCHAR NOT NULL, 
    "AA" VARCHAR NOT NULL, 
    "quantity" INTEGER, 
    "location" INTEGER, 
    "barcode" VARCHAR, 
    PRIMARY KEY ("product", "version", "productionDate", "AA", "order") 
); 

und wenn ich versuche, einen Datensatz auswählen (sein existiert):

SELECT * FROM INVENTORY 
WHERE (product='25120171' AND version='02' AND productionDate='091014' AND AA='001' AND order='4420') 

Ich erhalte einen Fehler

SQLiteManager: Likely SQL syntax error: SELECT * FROM INVENTORY WHERE (product='25120171' AND version='02' AND productionDate='091014' AND AA='001' AND order='4420') [ near "order": syntax error ] Exception Name: NS_ERROR_FAILURE Exception Message: Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [mozIStorageConnection.createStatement]

Wenn i AND order='4420' von Auswahlabfrage löschen:

SELECT * FROM INVENTORY 
    WHERE (product='25120171' AND version='02' AND productionDate='091014' AND AA='001'); 

es funktioniert. Ich kann nicht finden, wo der Fehler ist ...

Antwort

1

Verwenden Reihenfolge als Spaltenname ist wahrscheinlich, was zu dem Fehler führt.

As the doc says

The SQL standard specifies a huge number of keywords which may not be used as the names of tables, indices, columns, databases, user-defined functions, collations, virtual table modules, or any other named object. The list of keywords is so long that few people can remember them all. For most SQL code, your safest bet is to never use any English language word as the name of a user-defined object.

order ist einer von ihnen.

Sie können Ihre Abfrage neu schreiben den Spaltennamen zu entkommen:

SELECT * FROM INVENTORY 
WHERE (product='25120171' AND version='02' AND productionDate='091014' AND AA='001' AND `order`='4420') 
Verwandte Themen