Node.jsでSQLite3を実行してみているのですが、疑問点があります。
SQLite勉強中ですので、基本的なことかもしれないのですが、よろしくお願いいたします。
疑問点
- INSERT INTO lorem VALUES (1, 'b1'), (2, 'b2'), (2, 'b3')のような複数レコードを一括で挿入したいとき、上の例では、'(?),'(?)','(?)'ですが、
'(?,?),'(?,?)','(?,?)'に対応するにはどうすればいいのでしょうか?
例
javascript
let languages = ['C++', 'Python', 'Java', 'C#', 'Go']; // construct the insert statement with multiple placeholders // based on the number of rows let placeholders = languages.map((language) => '(?)').join(','); let sql = 'INSERT INTO langs(name) VALUES ' + placeholders; db.run(sql, languages, function(err) { if (err) { return console.error(err.message); } console.log(`Rows inserted ${this.changes}`); }); // close the database connection db.close();
上の例をみて複数に対応してみようとしたもの
javascript
let languages = [[0, 'C++'], [1, 'Python'], [2, 'Java'], [3, 'C#'], [4, 'Go']]; ht = "("; for (let i = 0, end = languages [0].length; i < end; i++) { if(i === end-1) ht += "?)"; else ht += "?,"; } // インサートされない let placeholders = languages .map((languages) => ht).join(','); let sql = 'INSERT INTO lorem VALUES ' + placeholders; db.run(sql, languages, function(err) { if (err) { return console.error(err.message); } console.log(`Rows inserted ${this.changes}`); }); // close the database connection db.close();
まだ回答がついていません
会員登録して回答してみよう