将值插入SQL本地数据库并使用Javascript

时间:2015-05-29 15:42:23

标签: javascript mysql sql-server cordova

我有一个表单,它使用html和javascript将数据提交到SQL数据库的表中。所以我想将用户输入的内容提交给他设备内的本地SQLite数据库。我正在使用PhoneGap,所以我只能使用HTML,JavaScript和CSS。我插入了一个名为SubmVal的数据。我想将该值插入名为TEST的表中,并且只有两个字段[id INT NOT NULL - name VARCHAR]。我使用这段代码:

var db = window.openDatabase("Database", "1.0", "Cordova TEST", 20000);
db.transaction(populateDB, errorCB, successCB);

function SubmitButton() {
    /*
    CODE TO GET THE INSERTED DATA
    */
    var SubmVal = submitteddata;
    if (confirm('Are you sure you want to save this ' + SubmVal + ' into the database?')) {
                 function populateDB(tx) {
                 tx.executeSql('INSERT INTO TEST (id, name) VALUES (1, SubmVal)');
                 }
                 alert("Succesfully Inserted");
    } else {
                 alert("Cancelled");
    }

}

所以我有3个问题: 1.如何将SubmVal放入表格的第二个字段?我很确定这个不起作用:

tx.executeSql('INSERT INTO TEST (id, name) VALUES (1, SubmVal)');

2。如何让这个populateDB(tx)函数工作,就像物理延续一样(不按其他按钮或东西)。我是否需要像这样更改代码:

if (confirm('Are you sure you want to save this ' + SubmVal + ' into the database?')) {
                     tx.executeSql('INSERT INTO TEST (id, name) VALUES (1, SubmVal)');}

3。如何使用函数打印表格的每一行?

为了尽可能多地帮助那些有同样问题的人,我提出了一个更普遍的问题。提前谢谢。

1 个答案:

答案 0 :(得分:0)

基本的javascript字符串:

tx.executeSql('INSERT INTO TEST (id, name) VALUES (1, SubmVal)');
                                                      ^^^^^^^

由于SubmVal位于字符串中,因此Javascript将其视为字符串中的所有其他内容 - 某些文本。这意味着您要告诉数据库引擎从不存在的字段中插入值。

你想要

tx.executeSql('INSERT INTO TEST (id, name) VALUES (1, ' + SubmVal + ')');
                                                      ^^^^^^^^^^^^^^^

这样你就可以将JS变量连接到SQL字符串中。

请注意,这种构造让您对sql injection attacks开放。

如果SubmVal不是数字,则也必须引用它。