0

iOS アプリの SQLite 3 データベースにデータを挿入しようとしています。しかし、私には役に立たないエラーが発生し続けます。

これは挿入しようとしている私のコードです:

 @try {
        NSString *dbPath = [self.GetDocumentDirectory stringByAppendingPathComponent:@"knhb.sqlite"];
        BOOL success = [fileMgr fileExistsAtPath:dbPath];
        if(!success)
        {
            NSLog(@"Cannot locate database file '%@'.", dbPath);
        }
        if((sqlite3_open_v2([dbPath UTF8String], &db, SQLITE_OPEN_READWRITE, NULL) != SQLITE_OK))
        {
            NSLog(@"An error has occured.");
        }


        NSString *sqlString = [NSString stringWithFormat:@"INSERT INTO Profile (name, password) VALUES ('%@','%@')", name, password];

        const char *sql = [sqlString UTF8String];

        sqlite3_stmt *sqlStatement;

        if(sqlite3_prepare_v2(db, sql, 1, &sqlStatement, NULL) != SQLITE_OK)
        {
            NSLog(@"%s SQLITE_ERROR '%s' (%1d)", __FUNCTION__, sqlite3_errmsg(db), sqlite3_errcode(db));
        }

        sqlite3_step(sqlStatement);
        sqlite3_finalize(sqlStatement);

        int lastInsert = sqlite3_last_insert_rowid(db);
        NSLog(@"lastinsertid:%d", lastInsert);

        sqlite3_close(db);
    }
    @catch (NSException *exception) {
        NSLog(@"An exception occured: %@", [exception reason]);
    }

私のデータベース テーブル Profile には、idProfile、name、および password の 3 つの列があります。しかし、idProfile は int で主キーであるため、自動インクリメントされるため、含める必要はありません。

私が取得し続けるエラーは次のとおりです: SQLITE_ERROR 'near "I": syntax error' (1)

Documents フォルダに書き込んでいます。

どんな助けでも大歓迎です。

大安

4

1 に答える 1

1

理由はよくわかりませんが、次のコード行を変更して修正しました。

if(sqlite3_prepare_v2(db, sql, 1, &sqlStatement, NULL) != SQLITE_OK)

私はそれを次のように変えました:

if(sqlite3_prepare_v2(db, sql, -1, &sqlStatement, NULL) != SQLITE_OK)

1 または -1 の意味がわからない。多分誰かが詳しく説明できますか?

乾杯!

于 2013-04-14T19:20:55.580 に答える