1

iPad 開発プロジェクトで SQLite データベースへの書き込みに問題があります。これは、insert ステートメントを使用してデータベースに書き込むコードです。ステートメントを実行しても Sqlite はエラーを返しませんが、データはまだデータベースに保存されていません。

私の挿入ステートメントの簡略化されたバージョン:

//Insert Into POHeader(CustID, CatalogName) Values('0', 'webdemo')


@try {
        NSFileManager *fileMgr = [NSFileManager defaultManager];
        NSString *dbPath = [[[NSBundle mainBundle] resourcePath]stringByAppendingPathComponent:@"Orders.db"];
        BOOL success = [fileMgr fileExistsAtPath:dbPath];
        if(!success)
        {
            NSLog(@"Cannot locate database file '%@'.", dbPath);
        }
        if(!(sqlite3_open([dbPath UTF8String], &db) == SQLITE_OK))
        {
            NSLog(@"An error has occured: %@", sqlite3_errmsg(db));
        }

    sql = [self prepareSqlForPOHeader];
    sqlite3_stmt *sqlStatement;

    int sqlResult = (sqlite3_prepare_v2(db, sql, -1, &sqlStatement, NULL));

    if (sqlResult != SQLITE_OK)// (sqlite3_prepare_v2(db, sql, -1, &sqlStatement, NULL) != SQLITE_OK)
    {
        NSLog(@"Problem with prepare statement:  %@", sqlite3_errmsg(db));
    }else{
        //success
    }

    sqlite3_finalize(sqlStatement);

}
@catch (NSException *exception) {
    NSLog(@"Problem with prepare statement: %@", sqlite3_errmsg(db));
}
@finally {
    sqlite3_close(db);
}
4

2 に答える 2

0

ステートメントを実行すると、機能します

于 2012-08-10T16:43:29.503 に答える
0

次の行を追加するのを忘れました: sqlite3_step(sqlStatement);.

次のようにコードを変更します。

if ((sqlite3_prepare_v2(db, sql, -1, &sqlStatement, NULL) != SQLITE_OK)
{
    NSLog(@"Problem with prepare statement:  %@", sqlite3_errmsg(db));
}
else
{
    sqlite3_step(sqlStatement);
    sqlite3_finalize(sqlStatement);
}
于 2012-08-10T17:45:19.210 に答える