使用javascript将变量插入到SQLite中

时间:2009-10-18 09:45:10

标签: javascript firefox sqlite firefox-addon

我正在开发Firefox的扩展程序,我已经创建了SQLite DB。在表中插入值时,我收到一条错误消息:

  

错误:http://en.wikipedia.org调用方法的权限被拒绝   <>。

上的UnnamedClass.toString

要插入的字符串值存储在变量中。

var book = "Harry Potter";
var myInsertQuery = 'INSERT INTO mybooks_tbl(title) VALUES('+ book + ');';

我们如何将数据作为变量插入表中而不是作为字符串?

3 个答案:

答案 0 :(得分:3)

SQLite遵循string literals的ANSI标准:

  

通过将字符串括在单引号(')中形成字符串常量。字符串中的单引号可以通过在行中放入两个单引号来编码

这样:

function sqlstr(s) {
    return "'"+s.replace(/'/g, "''")+"'";
}

var query= 'INSERT INTO books(title) VALUES('+sqlstr(book)+');';

你必须记住要逃避这样的所有字符串文字,否则你将会创建一个客户端SQL注入漏洞。

答案 1 :(得分:1)

字符串中只有错误   var query ='INSERT INTO books(title)VALUES('+ sqlstr(book)+');';

tx.executeSql('INSERT INTO CLASS_LIST(“class_title”,“”)VALUES(“+ v.classTitle +”)');

答案 2 :(得分:0)

对于 sqlite3

经过一些研究,我发现了一种简单的方法,不用担心组装查询的字符串。您只需要在冒号前面添加参数即可。

let myObj = {
    paramOne: "First value",
    paramTwo: "Second value",
};
let sqlQuery = 'INSERT INTO myTable VALUES(:paramOne, :paramTwo);';

# Run command and variable will be replaces
db.run(sqlQuery, [myObj.paramOne, myObj.paramTwo], ...)