DBにいくつかのクエリを挿入するためにFMDBを使用しようとしています。
挿入の問合せを確認すると、挿入されているというメッセージが表示されます。
後で実際にテーブルからデータを読み取ることができます。
しかし、DBから情報を読み込もうとすると、nullに戻ります。
XcodeプロジェクトでDBをチェックしても、更新されていないようです。
それは私を混乱させます。どのような問題が起こる可能性がありますか?FMDBがDBに挿入されていません
0
A
答えて
4
コードが間違っています。
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *dbPath = [documentsDirectory stringByAppendingPathComponent:@"db.sqlite"];
FMDatabase *db = [FMDatabase databaseWithPath:dbPath];
[db open];
[db executeUpdate:@"INSERT INTO foo (bar) VALUES (?)", bar];
[db close];
、読み:これは私が書くために使用するものです
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *dbPath = [documentsDirectory stringByAppendingPathComponent:@"db.sqlite"];
FMDatabase *db = [FMDatabase databaseWithPath:dbPath];
[db open];
NSMutableArray *bar = [[[NSMutableArray alloc] init] autorelease];
FMResultSet *s = [db executeQuery:@"select * from foo"];
while ([s next]) {
[bar addObject:[s stringForColumn:@"bar"]];
}
NSLog(@"%@", bar);
[db close];
を私はデシベルを設置場所もチェックアウト。あなたのやり方は、シミュレータでは動作しますが、サンドボックスやすべてのためにデバイスでは動作しないと思います。
幸運を祈る!
EDIT:
- (void)createEditableCopyOfDatabaseIfNeeded {
// First, test for existence.
BOOL success;
NSFileManager *fileManager = [NSFileManager defaultManager];
NSError *error;
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *writableDBPath = [documentsDirectory stringByAppendingPathComponent:@"db.sqlite"];
success = [fileManager fileExistsAtPath:writableDBPath];
if (success) return;
// The writable database does not exist, so copy the default to the appropriate location.
NSString *defaultDBPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"db.sqlite"];
success = [fileManager copyItemAtPath:defaultDBPath toPath:writableDBPath error:&error];
if (!success) {
NSAssert1(0, @"Failed to create writable database file with message '%@'.", [error localizedDescription]);
}
}
としてapplication:didFinishLaunchingWithOptions
からそのメソッドを実行します:あなたが最初にあなたのprojecttreeでデータベースを置くことを確認してください
[self performSelector:@selector(createEditableCopyOfDatabaseIfNeeded) withObject:nil];
アプリのデリゲートで
入れ、これを。
関連する問題
- 1. mysqli_multi_queryがmysql dbに挿入されていません
- 2. セッションエラー値がDBに挿入されません
- 3. HTMLフォームがアクセスDBにデータを挿入していません
- 4. データはまだSQLite DBに挿入されていませんか?
- 5. datepickerが入力フィールドに挿入されていません
- 6. mysql dbに挿入できません
- 7. LINQ挿入 - エラーは表示されませんが挿入されません
- 8. ノードは作成されていますが、Drupal 7にdbに挿入されません。
- 9. 新しい行がデータベースに挿入されていません
- 10. 挿入クエリが注文テーブルを介して挿入されていません
- 11. Ajaxレスポンスオプションの値がデータベースに挿入されていません
- 12. データがFirebaseに挿入されていません
- 13. Phpmyadminにデータが挿入されていません
- 14. PHPがデータベースに挿入されていません
- 15. レコードがデータベースsqliteに挿入されていません
- 16. Wordpressのプラグインデータがカスタムテーブルに挿入されていません
- 17. データがMySQLデータベースに挿入されていません
- 18. MongoDBインスタンスにデータが挿入されていません
- 19. データがcodeigniterのデータベースに挿入されていません
- 20. php mysqlにデータが挿入されていません
- 21. 行がテーブルに挿入されていません
- 22. PHP MySQLがデータベースに挿入されていません
- 23. アンドロイドアプリケーションのデータベースに日付が挿入されていません
- 24. Python psycopg2がpostgresqlテーブルに挿入されていません
- 25. フォームの値がデータベースに挿入されていません
- 26. 値がFirebaseデータベースに挿入されていません
- 27. SQL - SQLサーバーインスタンスにデータが挿入されていません
- 28. divの内容がデータベースに挿入されていません
- 29. データがテーブルに挿入されていませんか?
- 30. ステートレスEJBがメッセージドリブンBean(MDB)に挿入されていません
あなたは 'db.traceExecution = YES'と' db.logsErrors'を使って何が起こっているのかチェックしますか? –
db.traceExecutionとdb.logsErrorsの両方をチェックしました。エラーを表示せず、トランザクションを表示します。 – Mush
DBから読み取るコードを投稿できますか? –