1

空のフィールドがいくつかある SQLite データベースからテーブルを開く必要があるため、開くテーブルの名前とドキュメント フォルダー内のデータベース アドレスを指定した後 (問題ありません)、クエリを設定し、関数sqlite_prepare_v2を使用してデータの抽出を準備しますが、値1( SQLite_ERROR) を返し、構文エラーが発生します。なんで?フィールド名を正しく書きました。

-(NSMutableArray*)loadDatiFromTable:(NSString*) nameTable {

    NSString *query =[NSString stringWithFormat:@"SELECT id,title, ifnull(IMAGES,''),ifnull(text, ''), ifnull(NUMBER, ''),ifnull(CAP, 0) FROM %@ order by ID", nameTable];  
    sqlite3_stmt *statement;
    int sqlResult = sqlite3_prepare_v2(database, [query UTF8String], -1, &statement,nil);
    NSLog(@"The value is %d", sqlResult); // here sqlResult is 1

    if (sqlResult == SQLITE_OK) {
        while (sqlite3_step(statement) == SQLITE_ROW) {
            //......
        }
        sqlite3_finalize(statement);
    } else {
        NSLog(@"Failed from sqlite3_step(statement). Error is:  %s", sqlite3_errmsg(database) );
        // here return: "Failed from sqlite3_step(statement). Error is:  near "NUMBER": syntax error"
       sqlite3_close(database);
   }

   return self.tableArray;
}


-(id) initWithTable:(NSString*)nomeTabella withDbPath: (NSString *)dbPath { 
    self = [super init];
    if (self) {
        if (sqlite3_open([dbPath UTF8String], &database) != SQLITE_OK) {
            NSLog(@"Failed open database");
        } else {
            NSLog(@"OPEN DATABASE");
            [self loadDatiFromTable:nomeTabella ];
        }

        return self;
    }
}

エラーメッセージは次のとおりです。

    "Failed from sqlite3_step(statement). Error is:  near "NUMBER": syntax error"
4

1 に答える 1

0

この単語が SQL キーワードとして解釈されないようにするために、"NUMBER"代わりに使用します。NUMBER

于 2012-10-22T08:17:30.947 に答える