如何使用预先填充的数据库与tidesdk /钛桌面

时间:2012-09-28 16:01:07

标签: sqlite titanium desktop-application tidesdk

在使用预先填充的数据库开发桌面应用程序时,我需要一些帮助。我已经尝试了很多方法来实现这一点,包括Tidesdk的API http://tidesdk.multipart.net/docs/user-dev/generated/#!/api/Ti.Database.DB和Titanium Desktops旧API http://developer.appcelerator.com/apidoc/desktop/latest/Titanium.Database-module中提到的那些。

虽然后者(使用Titanium而不是Ti)可以在apps目录中创建数据库,但它不会安装我预先填充的sqlite数据库,该数据库位于我的应用程序的资源文件中。

我的几次尝试位于

之下
var db = Titanium.Database.openFile('test_db.sqlite', 'test_db');

var db = Titanium.Database.openFile(Ti.Filesystem.getFile(
                          Ti.Filesystem.getApplicationDataDirectory(), 'test_db.sqlite')); 

var db = Ti.Database.open('test_db');

如前所述,其中大多数都设法创建一个名称给定的数据库,但是当我尝试运行像db.execute(SELECT)那样简单的东西时,我知道在我预先填充的数据库中存在的东西我收到错误说明

 Exception executing: SELECT name, id FROM people ORDER BY name COLLATE NOCASE, Error was: SQL Statement invalid or database missing

我已经搜索了高低不同的东西来回答这个问题,但是每个人都继续参考前面提到的API或者移动API的Ti.database.install(),它们也不起作用。

使用钛桌面是否可以使用预先填充的sqlite数据库,或者在创建它之后是否必须填充它?如果是这样,任何方向都会有所帮助(将.sqlite文件放在应用程序中的位置以及要调用的函数)。

我目前正在使用Titanium Studio和tidesdk.org要求的钛桌面osx SDK 1.2.0.RC4,直到他们发布了开源sdk。

提前致谢

1 个答案:

答案 0 :(得分:0)

这是可能的,我刚刚在最近的桌面应用程序中使用此功能,将其成功部署到Windows和Mac。

根据我的经验,有时您的数据库文件可能已损坏,例如,如果您使用Titanium.Database.install命令,并且它无法找到要从中预加载的文件(例如,可能是您第一次指定路径错误) ,它将自己创建文件,任何后续的安装命令都不起作用,因为它已经认为已经安装了这个数据库。

您是否尝试过清除应用程序数据?这是钛安装数据库的地方。对于Mac,这位于/User/Library/Application Support/APPNAME目录中。他们是数据库的目录,删除它并再试一次。

此外,Titanium Q&A上的这个答案可能会有所帮助,它会讨论使用Mobile SDK的过程,但数据库的内容是相同的。

希望这有帮助!