2017-02-18 28 views
0

我需要做多個插入,我不知道什麼是錯的。參見:使用executeSql插入muiltples

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

我該如何解決這個問題?

+0

什麼是問題? – rkosegi

+0

@rkosegi不插入銀行。 – Viana

回答

1

您目前正試圖在executeSql()的單個調用中執行多個插入語句。在單個語句中插入多個記錄的語法是:

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

如果要防止插入它的名稱已經存在的可能性,要做到這一點最簡單的方法也許是對name添加唯一約束柱。雖然這是不可能做到這一點SQLite中而無需重新創建表,我們可以添加一個唯一索引,以獲得相同的效果:

CREATE UNIQUE INDEX name_index ON check_item (name); 

延伸閱讀:How to add unique constraint in already made table in sqlite ios?

+0

謝謝你。我只想在記錄不存在的情況下插入。我怎樣才能做到這一點? – Viana

+0

因此,在創建表格時,我應該將「名稱」設置爲唯一的,對吧? – Viana

+1

是的,將這一行添加到你的'CREATE TABLE'語句中:'CONSTRAINT name_constraint UNIQUE(name)' –

0

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