如何使用变量中的数据填充我的sql数据库?

时间:2014-03-22 01:25:19

标签: javascript

我正在开发一个Phone Gap应用程序,并且我正在尝试使用sql Phone Gap数据库来存储JSON数据。我不知道如何存储将存储在变量中的JSON信息。一切正常但我不知道如何用来自JSON的变量信息填充数据库。这是代码:

这是以下代码的一部分,我遇到了以下问题:

// Populate the database
//
function populateDB(tx) {
    tx.executeSql('DROP TABLE IF EXISTS DEMO');
    tx.executeSql('CREATE TABLE IF NOT EXISTS DEMO (id unique, data)');
    tx.executeSql('INSERT INTO DEMO (id, data) VALUES (1, "First row")');
    tx.executeSql('INSERT INTO DEMO (id, data) VALUES (2, "Second row")');
}

哪里"第一排"是的,我在那里是存储JSON数据的变量。我不知道如何在那里放置变量并将其理解为包含信息的变量。如何使用变量中的所需信息填充数据库?

<!DOCTYPE html>
<html>
<head>
<title>Storage Example</title>

<script type="text/javascript" charset="utf-8" src="cordova.js"></script>
<script type="text/javascript" charset="utf-8">

// Wait for device API libraries to load
//
document.addEventListener("deviceready", onDeviceReady, false);

// device APIs are available
//
function onDeviceReady() {
    var db = window.openDatabase("Database", "1.0", "Cordova Demo", 200000);
    db.transaction(populateDB, errorCB, successCB);
}

// Populate the database
//
function populateDB(tx) {
    tx.executeSql('DROP TABLE IF EXISTS DEMO');
    tx.executeSql('CREATE TABLE IF NOT EXISTS DEMO (id unique, data)');
    tx.executeSql('INSERT INTO DEMO (id, data) VALUES (1, "First row")');
    tx.executeSql('INSERT INTO DEMO (id, data) VALUES (2, "Second row")');
}

// Transaction error callback
//
function errorCB(tx, err) {
    alert("Error processing SQL: "+err);
}

// Transaction success callback
//
function successCB() {
    alert("success!");
}

</script>
</head>
<body>
<h1>Example</h1>
<p>Database</p>
  </body>
  </html>

1 个答案:

答案 0 :(得分:1)

不知道你的json变量来自哪里......只能说你可以使用连接将变量插入到SQL语句中。

// Populate the database
//
var JSONvar = "json string";
function populateDB(tx) {
    tx.executeSql('DROP TABLE IF EXISTS DEMO');
    tx.executeSql('CREATE TABLE IF NOT EXISTS DEMO (id unique, data)');
    tx.executeSql('INSERT INTO DEMO (id, data) VALUES (1, "'+ JSONvar +'")');
}

由于全局变量通常是禁忌,您可能希望将对populateDB的调用包装在匿名函数中并将其传递给您要使用的json。

// device APIs are available
//
function onDeviceReady() {
    var json = '["a", "json", "string"]';
    var db = window.openDatabase("Database", "1.0", "Cordova Demo", 200000);
    db.transaction(function(tx){ populateDB(tx, json); }, errorCB, successCB);
}

// Populate the database
//
function populateDB(tx, JSONvar) {
    tx.executeSql('DROP TABLE IF EXISTS DEMO');
    tx.executeSql('CREATE TABLE IF NOT EXISTS DEMO (id unique, data)');
    tx.executeSql('INSERT INTO DEMO (id, data) VALUES (1, "'+ JSONvar +'")');
}