1

SqLite データベースに対して単純なハードコーディングされた挿入ステートメントを実行しようとしています。コードは機能し、自分の NSLog から成功メッセージが表示されますが、データベースにはレコードが追加されません。誰でも助けることができますか?どうも!ヴィヴ

-(void)addFavorites{
    const char *sqlInsert = "insert into rivers (stat_ID, stat_Name, state) values ('03186500','WILLIAMS RIVER','WA')";
    sqlite3_stmt *statement;

    sqlite3_prepare_v2(_database, sqlInsert, -1, &statement, NULL);
    if(sqlite3_step(statement) == SQLITE_DONE){
        NSLog(@"RECORD ADDED!");
    } else {
        NSLog(@"RECORD NOT ADDED!");
    }
    sqlite3_finalize(statement);
}
4

1 に答える 1

0

データベースをバンドルから NSDocuments ディレクトリにコピーするために、アプリケーション デリゲートにこのようなコードがありますか? データベースをそこにコピーしてから、バンドルではなく、sqlite3_open を実行しているときにそこを指すようにしてください。NSDocument ディレクトリは、デバイスが iTunes または iCloud に同期されるときに保存されるため、データを維持するためにデータベースを配置する場所になります。

NSString *databaseName = @"MyDatabase.sqlite";  
NSArray *systemPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *libraryDirectory = [systemPaths objectAtIndex:0];
NSString *databaseFullPath = [libraryDirectory stringByAppendingFormat:@"%@%@",@"/",databaseName];

//copy the database to the file system if it hasn't been done yet.
NSFileManager *fileManager = [NSFileManager defaultManager];
BOOL exists = [fileManager fileExistsAtPath:databaseFullPath];
if(exists == NO)
{
    NSString *dbPathInBundle = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:databaseName];
    [fileManager copyItemAtPath:dbPathInBundle toPath:databaseFullPath error:nil];
}
于 2013-04-07T04:43:11.670 に答える