Titanium安装DB

时间:2013-11-01 17:29:17

标签: android sqlite titanium titanium-alloy

使用Ti.Database.install()安装数据库时遇到一些问题。这就是我正在做的事情:

  • 打开新的默认合金项目
  • 将一些代码添加到controllers/index.js,以便文件看起来像这样

    var db = Ti.Database.install('/testimusDB.sqlite', 'testimusDB'); 
    var rs = db.execute('SELECT * FROM testimusTable');
    db.close();
    
    while (rs.isValidRow())
    {
      var name = rs.fieldByName('name');
      var age = rs.fieldByName('age');
      alert(name + ' is ' + age + 'years old');
      rs.next();
    }
    
    rs.close();
    
    $.index.open();
    
  • 使用FF Plugin SQLite Manager创建一个名为testimusDB.sqlite的数据库 并将其复制到项目的REsources文件夹

  • 在Samsung S3上通过Titanium Studio启动应用程序

我得到的是

   Runtime Error: LOCATION: [101,19] ti:/invoker.js
   MESSAGE: Uncaught Error: Resources/testimusDB.sqlite SOURCE: return
   delegate.apply(invoker._thisObj_,args);

具有相同问题的人通过减小DB的大小(我的是64 KB)或使用绝对路径(我尝试了绝对/相对路径和sqlite- / db- / sql-后缀)来解决它。任何想法如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

好的,我明白了:当你使用合金时,你不能使用install()! (如果有人知道这些信息的官方来源,请告诉我)。您需要使用模型来同步数据库。 This guythis guide给了我很多帮助。

感谢您的回答。

答案 1 :(得分:0)

在操作结束时关闭与db的连接:

rs.close();
db.close();

数据库的大小无关紧要。我使用的是更大的一个:> 10MB。