我正在尝试从服务器获取远程 mysql 数据以插入到 sqlite 数据库中
我已经完成了 here 的教程其中远程数据使用 json 数组显示。我想将 mysql 数据插入到手机上存储的 sqlite 数据库中。我正在用钛appcelerator开发应用程序。我引用的是here我一直在寻找一个简单的教程,但找不到任何我的问题是使用该教程我已经能够显示我之前插入 sqlite 数据库的应用程序中的远程数据和本地数据。但是,当我尝试将远程数据从 mysql 数据库插入到 sqlite 数据库时,它不会被插入。我使用的是tuorial为mysql提供的相同数据库,并在sqlite中创建了一个类似的数据库。两个数据库的结构是相同的id、整数和阴影、文本
我正在尝试的代码是
var win = Ti.UI.Createwindow;
var db = Ti.Database.install('titanium_json_db.sqlite','colors');
//db.execute('CREATE TABLE IF NOT EXISTS DATA (id INTEGER, shade TEXT)');
var resultSet = db.execute('SELECT * FROM colors');
if(resultSet.rowCount < 1){
alert("no records");
while(resultSet.isValidRow()){
var xhr = Ti.Network.createHTTPClient();
xhr.open('GET', 'http://192.168.0.xxx/Titanium-Mobile_Database-Driven_Source/read.php');
xhr.send();
xhr.onload = function(){
var json = JSON.parse(this.responseText);
if (json) {
Titanium.API.info('Error - Null return!');
alert("json error");
return;
}
for(var i=0; i < json.colors.length; i++){
db.execute('INSERT INTO colors (id, shade) VALUES(?,?)',json.colors[i].id,json.colors[i].shade);
};
};
};
};
win.open();
任何帮助都会很棒。
最佳答案
您的 XHR 请求永远不会执行。
if(resultSet.rowCount < 1){
alert("no records");
while(resultSet.isValidRow()){
如果结果集没有行,则警告“无记录”,然后如果有有效的返回行,则有条件地执行 XHR。
该代码块可以重写如下:
var rows = [];
if(rows.length < 1) {
alert('No rows!');
if (rows[0]) {
rows.push('Never going to happen.');
}
}
还需要注意的是,XHR 请求是异步的。 while 循环不会等待请求完成才继续。
关于android - 使用钛appcelerator中的json将远程mysql数据插入到sqlite中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20951172/