0

このデータベース プログラミングは初めてです。データベースから 1 つの列のデータを取得しましたが、データベースから複数の列のデータを取得できません。

ここに私のコードがあります

-(void) readItemsFromDatabaseforTable:(NSString *)tableName {


    arrayItems = [[NSMutableArray alloc] init];


    if(sqlite3_open([databasePath UTF8String], &database) == SQLITE_OK)
 {

           NSString *sql_str = [NSString stringWithFormat:@"select * from %@", tableName];

        const char *sqlStatement = (char *)[sql_str UTF8String];

            NSLog(@"query %s",sqlStatement);

        sqlite3_stmt *compiledStatement;

if(sqlite3_prepare_v2(database, sqlStatement, -1, &compiledStatement, NULL) == SQLITE_OK) 
{

            while(sqlite3_step(compiledStatement) == SQLITE_ROW) {

                NSString *idsstr = [NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement, 3)];               

                [arrayItems addObject:idsstr];
                NSLog(@"*************** %@",arrayItems);
            }
            while(sqlite3_step(compiledStatement) == SQLITE_ROW)
{

          NSString *caloriesstr = [NSString stringWithUTF8String:  

(char*)sqlite3_column_text(compiledStatement, 4)];               

                [caloriesarry addObject:caloriesstr];

                NSLog(@"naveenkumartesting");

                 NSLog(@"*************** %@",caloriesarry);

}

}

私の主な目的は、データベースから列データを取得し、複数の配列に格納することです。

みんな私を助けてください、

4

2 に答える 2

2

while次のように、すべてのデータを一度に取得できる場合は、2 回ループする必要はありません。

const char *stmt = "select id, name from table1 where isImage = 1";
sqlite3_stmt *selectstmt;
if (sqlite3_prepare_v2(database, stmt, -1, &selectstmt, NULL) == SQLITE_OK) {
    while(sqlite3_step(selectstmt) == SQLITE_ROW) {
        int rowid = sqlite3_column_int(selectstmt, 0);
        NSString * name = [NSString stringWithUTF8String:(char *)sqlite3_column_text(selectstmt, 1)];

    }
}
于 2012-04-23T04:59:43.467 に答える
1

このサンプル クエリを使用して、要件に従ってクエリを作成します。

NSString *str = [NSString stringWithFormat:@"Select * from Yourtablename where image1 = '%@' AND person1 = '%@' AND category = '%@' AND PurchaseAmt = '%@'",Str,person1,category,Amountdata];

このチュートリアルを使用する

于 2012-04-23T04:54:52.760 に答える