0

Appceleratorを使用しています。次のコードを使用してdbレコードをフェッチしています。データを表示および挿入するためのSQLiteGUIとしてSQLiteクライアントNavCatLiteを使用しています。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();

追伸:これは読み取り専用データベースではありません。ユーザーは毎回データを挿入およびフェッチします。

4

2 に答える 2

2

最初に保存/Resourcesするデータベースファイルは、アプリのインストール後に使用されるデータベースファイルではありません。

ガイドによる

一方、install()は、既存のデータベースファイルをTitaniumのResourcesディレクトリまたはその子孫の1つからapplicationDataDirectory /../ database /にコピーし、開いたデータベースへの参照を返します。同じ名前のファイルがすでに存在する場合、コピーアクションはサイレントに失敗し、データベースが開かれるだけです。

要するに、それはそのようには機能しません。

于 2011-03-29T22:34:59.750 に答える
0

データベースは、デバイス/シミュレーターに最初にインストールされたときにアプリと一緒に一度だけインストールされると思います(とにかくiPhoneでこれを見ましたが、Androidについてはわかりません)。アプリが最初に実行されると、データベースは別の場所にコピーされ、その後は、更新されたデータベースではなく、実行されるコピーになります。build / iphone / build / androidディレクトリの内容を削除し、アプリを再度実行して更新を強制してみてください。それでも問題が解決しない場合は、シミュレーターをリセットするか、デバイスからアプリケーションを削除して、再度インストールしてみてください。

于 2011-03-28T11:54:33.157 に答える