没有这样的表:Ti.Database.install

时间:2017-07-31 16:42:07

标签: titanium appcelerator appcelerator-titanium appcelerator-alloy

我正在使用Ti.Database.install来安装我通过SQLite Manager创建的现有数据库。我在城市表中也插入了一些数据。在IOS模拟器上一切正常。当我尝试在Android设备上运行相同时,我收到错误“Uncaught no such table:city(code 1)”。我已将test.sqlite放在assets / db文件夹

var database =  Ti.Database.install('/db/test.sqlite', 'test');
Ti.API.debug('installed '+ database.getName()  );

var db = Ti.Database.open('test');
Ti.API.debug('reopened db'  );

var rs = db.execute('SELECT * from city LIMIT 5');
while (rs.isValidRow()) {

   // Ti.API.info(rs.fieldByName('name'));
   // rs.next();
}

db.close();

1 个答案:

答案 0 :(得分:1)

此方法始终适用于使用单一代码库的Android / iOS。将数据库文件保留在以下位置:

项目 - > app - > lib - > mydatabase.sqlite

然后我在一个文件中使用下面的代码,该文件也在Android / iOS的同一个lib目录中:

项目 - > app - > lib - > my_database.js:

try {
    var db = Ti.Database.install('mydatabase.sqlite', 'APP_DB_NAME');
    db.close();
} catch (ex) {}

注意: 根据文档, install()方法使用相同目录方法获取参数路径,这意味着无论您的数据库文件在何处是的,您必须在.js文件中运行安装代码,该文件必须位于同一目录中。

因此,上面的.sqlite文件位于该lib文件夹中,&安装脚本.js文件也在该lib文件夹中,这进一步为您提供了一个只在1个文件中运行安装脚本的通用位置。您可以使用 require('my_database');

在任何地方使用该文件