我正在开发一个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>
答案 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 +'")');
}