2

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

虽然后者(使用 Titanium 而不是 Ti)用于在应用程序目录中创建数据库,但它不会安装位于我的应用程序资源文件中的预填充 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 和 1.2.0.RC4 的 Titanium 桌面 osx SDK,这是按照 titesdk.org 的要求,直到他们在那里发布了开源 sdk。

提前致谢

4

1 回答 1

0

这是可能的,我刚刚在最近的一个桌面应用程序中使用了这个功能,成功地将它部署到了 Windows 和 Mac 上。

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

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

此外,这个关于Titanium Q&A 的答案可能会有所帮助,它讨论了移动 SDK 的过程,但数据库的东西是一样的。

希望这可以帮助!

于 2012-09-28T23:35:58.787 回答