sqlite3 - insert - javascript对象作为值

时间:2017-10-29 10:28:16

标签: javascript sqlite insert

使用javascript对象作为sqlite3插入值的最简单的解决方案是什么?以下代码不起作用。

const values = {
  name: 'John',
  age: 34,
  language: 'english'
};

db.run('INSERT INTO tablename VALUES (?)', values, (err) => {
  if (err) {
    console.log(err);
  } else {
    console.log('success');
  }
});

2 个答案:

答案 0 :(得分:2)

首先,您需要正确编写SQL。 要插入列name, age, language, 你需要像这样编写SQL:

INSERT INTO tablename (name, age, language) VALUES (?, ?, ?)

并传递3列的值作为参数。

db.run('INSERT INTO tablename (name, age, language) VALUES (?, ?, ?)', [values['name'], values['age'], values['language']]), (err) => { ... });

或者,如果JavaScript对象中的属性名称直接对应于列名,那么您可以动态生成正确的SQL字符串以获得更大的灵活性:

const cols = Object.keys(values).join(", ");
const placeholders = Object.keys(values).fill('?').join(", ");
db.run('INSERT INTO tablename (' + cols + ') VALUES (' + placeholders + ')', Object.values(values)), (err) => { ... });

答案 1 :(得分:1)

尝试?,?,?Obj.values()
代码。



const values = {
  name: 'John',
  age: 34,
  language: 'english'
};
paramString = "?";
for (var i = 0; i < Object.keys(values).length -1 ; i ++) paramString += ",?";
// db.run('INSERT INTO tablename VALUES ('+paramString + ')', Object.values(values));
 console.log('INSERT INTO tablename VALUES ('+paramString + ')',Object.values(values));
&#13;
&#13;
&#13;