android - 使用钛appcelerator中的json将远程mysql数据插入到sqlite中

标签 android mysql sqlite titanium appcelerator

我正在尝试从服务器获取远程 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/

相关文章:

php - Sqlite3通过PHP转储数据库

sqlite - F#SQLProvider SQLite忽略的列类型

database - 如何备份sqlite数据库?

c# - 设置数据库(SQLite)for Unity

android - 获取可用内容提供者的列表

php - MySQL查询显示问题

sql - MySql:它有类似 namespace 的 SCHEMA 吗?

javascript - 从 android 调用 javascript 函数

android.widget.Scrollview 无法转换为 android.widget.Linearlayout

mysql - EF 迁移时出错 - Azure - 应用程序上的 MySQL