0

データが入力されたデータベースを自分のアプリで配布したいと考えています。SQLitePluginを実装しようとしていますが、ページにあるように、iOS でそれを行う方法に関するドキュメントはありません。この時代遅れの手順を実装しようとしましたが、うまくいきませんでした。これをした人はいますか?

4

3 に答える 3

1

私は少なくともそれが私のために働く解決策を見つけたので、ここにあります:

あなたが言及したリンクのチュートリアルを使用して従いました:http://gauravstomar.blogspot.fr/2011/08/prepopulate-sqlite-in-phonegap.html

適切な database.db と 000...001.db を必ずコピーして貼り付けてください (適切なものは、/Caches と /Caches/file_0 フォルダー、または /WebKit と /WebKit/file__0 のいずれかにあります。覚えていません)。うまくいかない場合は、いずれかを試してください)。次に、それらをリソースのプロジェクト ディレクトリに貼り付けました。

次の 2 行を変更します。

NSString *masterPath = [libraryDir stringByAppendingPathComponent:@"WebKit/Databases/"];
NSString *databasePath = [libraryDir stringByAppendingPathComponent:@"WebKit/Databases/file__0/"];

次の行で:

NSString *masterPath = [libraryDir stringByAppendingPathComponent:@"Caches/"];
NSString *databasePath = [libraryDir stringByAppendingPathComponent:@"Caches/file__0/"];

シミュレーター/デバイスからアプリケーションを削除します。そして、実行します..動作します。データベースは事前に入力されています。

于 2012-08-20T14:48:32.473 に答える
1

データベースを Resources フォルダーに配置し、このコードを に配置しましたMainViewController.m

NSFileManager *fileManager = [NSFileManager defaultManager];
NSError *error;
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];

NSString *databasePath = [documentsDirectory stringByAppendingPathComponent:@"this.db"];

if ([fileManager fileExistsAtPath:databasePath] == NO) {
    NSString *resourcePath = [[NSBundle mainBundle] pathForResource:@"this" ofType:@"db"];
    [fileManager copyItemAtPath:resourcePath toPath:databasePath error:&error];
}
于 2012-08-20T20:31:24.170 に答える
0

以下はブログ投稿からのものですが、引用する前にリンクを投稿したことで少し非難されたので. 最後に URL を掲載しますが、完全な説明とフォローアップのコメントについては、そこにアクセスすることをお勧めします。このヘルプは、Scott Buckel の功績によるものです。

1) このプラグインを使用します: https://github.com/chbrody/Cordova-SQLitePlugin/

2) sqlite db ファイルを PhoneGap の /assets フォルダーにコピーします。

3) 次に、http: //gauravstomar.blogspot.com/2011/08/prepopulate-sqlite-in-phonegap.htmlの手順に従って、ファイルをネイティブ ストレージにコピーします。this.copy("Databases.db","/data/data/"+pName+"/app_database/"); を変更します。

3a) Databases.db の代わりに、データベース ファイル名を使用します。3b) app_database の代わりに、"databases" を使用します。 3c) /assets からファイルを削除することをお勧めします。これは、重複して不要になったためです。私のアプリは、必要なサイズの 2 倍になりました。

4) (このステップが必要かどうかはわかりません。私はその日オフィスを出る予定です)。SQLitePlugin.java を編集

4a) 176 行目、if ステートメントが常に実行されるように 1==1 を編集しました。179 行目 this.setStorage(appPackage, false); を変更しました。this.setStorage(appPackage、true);

5) 次に、次のコマンドを使用して DB を開き、他の PhoneGap データベースとして使用できます。

5a) var db = window.sqlitePlugin.openDatabase("[拡張子を含む完全なデータベース名]", "1.0", "PhoneGap デモ", 200000);

完全なブログ投稿: http://www.raymondcamden.com/index.cfm/2012/7/27/Guest-Blog-Post-Shipping-a-populated-SQLite-DB-with-PhoneGap

于 2012-08-20T01:26:04.650 に答える