1

SQLite Manager(firefox plugin) を使用して、4 列 5 行のテーブルを作成しました。次のコードを使用して、そのテーブルからランダムな行全体をフェッチしたかったのですが、これまで使用したことがないため機能しません..何が間違っているのでしょうか??

-(NSDictionary *)fetchQuestionsWithRowID:(NSInteger)rowID withDbPath:(NSString *)dbPath
        {

      NSDictionary *questDic=[NSDictionary dictionary];
            sqlite3 *database=nil;
            if (sqlite3_open([dbPath UTF8String], &database) == SQLITE_OK)
            {
                const char *sql = "SELECT * FROM quizQuestions Where rowid=?";

                sqlite3_stmt *selectstmt;

                int result = sqlite3_prepare_v2(database, sql, -1, &selectstmt, NULL);

                if(result != SQLITE_OK) {
                    NSLog(@"Prepare-error #%i: %s", result, sqlite3_errmsg(database));
                }

                if(sqlite3_prepare_v2(database, sql, -1, &selectstmt, NULL) == SQLITE_OK)
                {
// confused here
                    sqlite3_bind_text16(selectstmt, 1, &rowID, -1, SQLITE_TRANSIENT);
                    while(sqlite3_step(selectstmt) == SQLITE_ROW) {

                        NSString *str = [NSString stringWithUTF8String:(char *)sqlite3_column_text(selectstmt, 0)];

                        NSLog(@"string is %@",str);

                    }
                }
            }
            sqlite3_close(database);
            return questDic;
        }
4

1 に答える 1

0

Hemant、以下のコードを見てください。役立つかもしれませんが、必要に応じてそのコードを作成する必要があります。つまり、テーブルを修正する必要があります。

 NSString* sqliteQuery = NULL;
    sqliteQuery = [NSString stringWithFormat:@"SELECT roomImage,bookID,roomName,floorID,roomDesc,id FROM roomTbl"];
    sqlite3_stmt* statement;
    if( sqlite3_prepare_v2(db, [sqliteQuery UTF8String], -1, &statement, NULL) == SQLITE_OK )
    {
        while( sqlite3_step(statement) == SQLITE_ROW )
        {
            NSMutableDictionary* dict = [NSMutableDictionary new];
            NSData* data = nil;
            int length = sqlite3_column_bytes(statement, 0);
            data       = [NSData dataWithBytes:sqlite3_column_blob(statement, 0) length:length];
            [dict setObject:[Base64 encode:data] forKey:@"imageFloorBytes"];
            int idFR = sqlite3_column_int(statement, 1);
            [dict setObject:[NSString stringWithFormat:@"%d",idFR] forKey:@"BookingID"];

            [dict setObject:[NSString stringWithFormat:@"%s",(const char*)sqlite3_column_text(statement, 2)] forKey:@"roomName"];
            [dict setObject:[NSString stringWithFormat:@"%d",sqlite3_column_int(statement, 3)] forKey:@"floorID"];
            [dict setObject:[NSString stringWithFormat:@"%s",(const char*)sqlite3_column_text(statement, 4)] forKey:@"roomDesc"];
            [dict setObject:[NSString stringWithFormat:@"%d",sqlite3_column_int(statement, 5)] forKey:@"roomID"];
            [arr addObject:dict];
            [dict release];
        }
    }
    // Finalize and close database.
    sqlite3_finalize(statement);

また、データベースをインポートしましたか?そして、操作を行う前に、次のファイルまたはデータベースが存在するかどうかを確認する必要があります。

うまくいけば、それはあなたの問題を解決するでしょう

于 2012-12-18T12:28:12.773 に答える