gpt4 book ai didi

javascript - 使用 JSON 数组填充 phonegap sqlite 数据库

转载 作者:行者123 更新时间:2023-11-29 17:09:21 25 4
gpt4 key购买 nike

我正在尝试用 JSON 数组填充 phonegap sqlite 数据库,获取 JSON 的 Web 服务正在运行并且数据加载得很好,但是当我尝试将它插入到我的表中时,它一直给我一个 未定义 SQL 错误。

这是我的代码:

function populateDB(tx) {
//Setup database table
tx.executeSql('DROP TABLE IF EXISTS Profiles');
tx.executeSql('CREATE TABLE IF NOT EXISTS Profiles (id unique, name, email, phone)');
//Get data
var values;
var base_url = "https://www.hoomz.nl/staging/index.php/api/";
$.getJSON(base_url + 'profiles', function(result) {
$.each(result, function(i, item) {
console.log(item.name);
console.log('(' + item.id + ', "' + item.id + '", "' + item.id + '", "' + item.id + '"),');
values = values + '(' + item.id + ', "' + item.id + '", "' + item.id + '", "' + item.id + '"),';
});
console.log(values);
tx.executeSql('INSERT INTO Profiles (id, name, email, phone) VALUES' + values + ';');
});
console.log(values);
tx.executeSql('INSERT INTO Profiles (id, name, email, phone) VALUES' + values + ';');
}

也给出了这个错误:Uncaught InvalidStateError: 试图使用一个不可用或不再可用的对象

最佳答案

在这种情况下抛出的错误是,当 SQL 引擎尝试插入值时,对象不再存在。您应该将 JSON 结果存储在全局变量中,然后执行 SQL 操作。试试下面的代码,看看结果。

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
<script type="text/javascript" charset="utf-8" src="cordova.js"></script>
<script type="text/javascript" charset="utf-8">
var db = null;
var resultJSON;
function insertIntoDB() {
db.transaction(function (tx){
tx.executeSql('DROP TABLE IF EXISTS Profiles');
tx.executeSql('CREATE TABLE IF NOT EXISTS Profiles (id , name, email, phone)');
var recursiveFunction = function(index) {
if (index < resultJSON.length) {
tx.executeSql('INSERT INTO Profiles (id, name, email, phone) VALUES (?, ?, ?, ?)',
[resultJSON[index].id,resultJSON[index].name,resultJSON[index].email,resultJSON[index].phone], function (){index++; recursiveFunction(index)}, errorCB);
}
}
recursiveFunction(0);
});
}

function errorCB(err) {
console.log("Error processing SQL: "+err.code+":"+err.message);
}

function onDeviceReady() {
db = window.openDatabase("test", "1.0", "Test DB", 1000000);
var base_url = "https://www.hoomz.nl/staging/index.php/api/";
$.getJSON(base_url + 'profiles', function(result) {
resultJSON = result;
insertIntoDB();
});
}
document.addEventListener("deviceready", onDeviceReady, false);
</script>

关于javascript - 使用 JSON 数组填充 phonegap sqlite 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22717298/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com