0

我正在使用 Appcelerator。我正在使用以下代码来获取数据库记录。我使用 SQLite 客户端 NavCatLite 作为 SQLite GUI 来查看和插入数据。我有一个奇怪的问题,当我通过 SQLite 客户端更新记录时,它确实反映在我的代码中。为什么不刷新数据?我什至关闭了客户端,因为我认为它会缓存连接,但它也没有帮助。代码如下:

/** * All Db Functions Goes here */

var resumeDB = Titanium.Database.install('resume.db', 'myResume');
//var resumeDB = Titanium.Database.open('cold');

//Iterate through ResultSet

var myResultSet = resumeDB.execute('SELECT * FROM cvs');
while (myResultSet.isValidRow())
{
  Ti.API.info("Result iS = "+myResultSet.fieldByName('sb_title'));
  myResultSet.next();

} // Do something that iterates

resumeDB.close();

ps:这不是只读数据库。用户每次都会插入和获取数据。

4

2 回答 2

2

您最初存储/Resources的数据库文件不是应用程序安装后使用的数据库文件。

根据指南

另一方面,install() 将从 Titanium 的 Resources 目录或其后代目录中复制一个预先存在的数据库文件到 applicationDataDirectory/../databases/ 并返回对打开的数据库的引用。如果已存在同名文件,则复制操作将静默失败,数据库将被简单地打开。

简而言之,它只是不能那样工作。

于 2011-03-29T22:34:59.750 回答
0

我认为数据库只安装一次,以及第一次安装到设备/模拟器上的应用程序(我已经在 iPhone 上看到过这个,不确定 Android)。第一次运行应用程序时,您的数据库将被复制到另一个位置,此后运行的是副本,而不是更新的数据库。尝试删除 build/iphone / build/android 目录的内容并再次运行应用程序以强制更新。如果这不起作用,请尝试重置模拟器/从设备上删除应用程序并重新安装。

于 2011-03-28T11:54:33.157 回答