2017-02-18 1 views
0

Ich muss mehrere Einsätze tun, und ich weiß nicht, was los ist. Siehe:Muiltples einfügen mit executeSql

db.openDatabase({ 
     name: "data.db", 
     location: "default" 
    }).then(() => { 
     db.executeSql(
     +"INSERT INTO check_item (name) VALUES ('Pneus - calibragem'); " 
     +"INSERT INTO check_item (name) VALUES ('Pneus – banda de rodagem'); " 
     +"INSERT INTO check_item (name) VALUES ('Nivel do oleo'); " 
     +"INSERT INTO check_item (name) VALUES ('Luzes dianteiras'); " 
     +"INSERT INTO check_item (name) VALUES ('Luzes traseiras'); " 
     +"INSERT INTO check_item (name) VALUES ('Triangulo de sinalizacao'); " 
     +"INSERT INTO check_item (name) VALUES ('Chave de roda'); " 
     +"INSERT INTO check_item (name) VALUES ('Documentacao do veiculo'); ", {}).then((data) => { 
      console.log("TABLE CREATED: ", data); 
     }, (error) => { 
      console.error("Unable to execute sql teste", error); 

     }) 
    }, (error) => { 
     console.error("Unable to open database", error); 
    }); 

Wie kann ich das beheben?

+0

Und was ist das Problem? – rkosegi

+0

@rkosegi Wird nicht in Bank eingefügt. – Viana

Antwort

1

Sie versuchen derzeit, mehrere Einfügeanweisungen innerhalb eines einzelnen Aufrufs an executeSql() auszuführen. Die Syntax für mehrere Datensätze in einer einzigen Anweisung eingefügt ist:

INSERT INTO check_item (name) 
VALUES ('Pneus - calibragem'), 
     ('Pneus – banda de rodagem'), 
     ('Nivel do oleo'), 
     ... 
     ('Documentacao do veiculo'); 

Wenn Sie die Möglichkeit zum Einfügen eines Namens verhindern wollen, die bereits vorhanden ist, ist der einfachste Weg, dies zu tun, ist vielleicht eine eindeutige Einschränkung auf die name hinzufügen Säule. Während es nicht möglich ist, dies ohne Neuerstellung der Tabelle in SQLite zu tun, können wir einen eindeutigen Index hinzuzufügen, um den gleichen Effekt zu erhalten:

CREATE UNIQUE INDEX name_index ON check_item (name); 

Weiterführende Literatur: How to add unique constraint in already made table in sqlite ios?

+0

Vielen Dank. Ich möchte nur einfügen, wenn der Datensatz nicht vorhanden ist. Wie kann ich das machen? – Viana

+0

Also zum Zeitpunkt der Erstellung der Tabelle sollte ich den "Namen" als einzigartig, richtig? – Viana

+1

Ja, füge diese Zeile zu deiner 'CREATE TABLE' Anweisung hinzu:' CONSTRAINT name_constraint UNIQUE (name) ' –

0

INSERT INTO tbl_name (a, b, c) WERTE (1,2,3), (4,5,6), (7,8,9);