【发布时间】:2017-01-29 07:19:27
【问题描述】:
我一直在尝试使用文档中的代码将一个小型简单数据库安装到我的钛项目中,并尝试根据各种来源的建议进行不同的调整。但我无法让它工作,我得到像“没有这样的表”或结果集为空的错误。目前我的代码如下所示:
var db = Ti.Database.install('../assets/exercises.db', 'exercisesDB');
Ti.API.info('installed '+ db.getName() );
db.close();
Ti.API.info('closed db' );
db = Ti.Database.open('exercisesDB');
Ti.API.info('reopened db' );
//Ti.API.info(db.getName() );
var exercisesDBRS = db.execute('SELECT id,name FROM exercise');
我已尝试将数据库文件exercises.db 放在资产文件夹和资源文件夹中,但我没有找到任何地方。我在 OSX Sierra 上使用“DB Browser for SQLite”ver 3.9.1 创建了 db 文件 - 它与 appcelerator 合金项目兼容吗?我当前的代码在执行调用时产生错误“没有这样的表”。我向你保证 db 文件有一个练习表。
PS,新项目 index.js 文件中的完整代码如下:
var db = Ti.Database.install('exercises.sqlite', 'exercisesDB');
Ti.API.debug('installed '+ db.getName() );
db.close();
Ti.API.debug('closed db' );
db = Ti.Database.open('exercisesDB');
Ti.API.debug('reopened db' );
var exercisesDBRS = db.execute('SELECT id, name FROM exercise');
Ti.API.debug('executed select');
Ti.API.debug(' rowcount== '+ exercisesDBRS.rowCount);
while (exercisesDBRS.isValidRow()) {
var exId = exercisesDBRS.fieldByName('id');
var exName = exercisesDBRS.fieldByName('name');
Ti.API.debug("Exercise: "+exId + ' ' + exName );
exercisesDBRS.next();
}
exercisesDBRS.close();
db.close();
function doClick(e) {
alert($.label.text);
}
$.index.open();
新项目,但代码相同,并且在 app/lib 文件夹中具有相同数据库文件的副本。同样的错误 - 在 android 中测试时执行行上没有这样的表,在 iOS sim 中工作正常。
【问题讨论】:
标签: sqlite titanium appcelerator titanium-alloy