我正在使用Appcelerator。我使用以下代码来获取db记录。我使用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();
P.s:这不是只读数据库。用户每次都会插入和获取数据。
答案 0 :(得分:2)
最初存储在/Resources
中的数据库文件不是安装后应用程序使用的数据库文件。
另一方面, install()将复制 来自的预先存在的数据库文件 Titanium的Resources目录,或者一个 它的后代,到 applicationDataDirectory /../数据库/ 并返回对已打开的引用 数据库即可。如果文件已存在 具有相同名称的复制动作 将默默地失败和数据库 将被简单地打开。
简而言之,它不会那样工作。
答案 1 :(得分:0)
我认为数据库只安装了一次,连同应用程序首次安装到设备/模拟器上时(我用iPhone看过这个,不确定Android)。第一次运行应用程序时,您的数据库将被复制到另一个位置,此后它是运行的副本,而不是您更新的数据库。尝试删除build / iphone / build / android目录的内容并再次运行应用程序以强制更新。如果这不起作用,请尝试重置模拟器/从设备上删除应用程序并重新安装。