0

誰かが以下のいくつかの不足しているコードを埋めるように親切にできますか. sqlite3_step を使用して sqlite ステートメントを実行し、結果の各行を繰り返し処理し、データを使用可能な形式にするのに苦労しています。

データベースを作成するコードは次のとおりです (データベースは 2 つの列のみです)。

// Check if database is setup, if not create it
NSString *documents_directory;
NSArray *directory_path;

// Get the documents directory
directory_path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);

documents_directory = [directory_path objectAtIndex:0];

// Build the path to the database file
databasePath = [[NSString alloc] initWithString: [documents_directory stringByAppendingPathComponent:  @"weights.db"]];

NSFileManager *file_manager = [NSFileManager defaultManager];

// Create database if it doesn't already exist
if([file_manager fileExistsAtPath: databasePath ] == NO){
    const char *database_path = [databasePath UTF8String];

    if(sqlite3_open(database_path, &contactDB) == SQLITE_OK){
        char *error_message;
        const char *sql_statement = "CREATE TABLE IF NOT EXISTS RECORDED_WEIGHTS (ID INTEGER PRIMARY KEY AUTOINCREMENT, WEIGHT TEXT, TIME TEXT)";

        if(sqlite3_exec(contactDB, sql_statement, NULL, NULL, &error_message) != SQLITE_OK){
            status.text = @"Failed to create table";                
        }
        sqlite3_close(contactDB);

    }else{
        status.text = @"Failed to open/create database";
    }
}

そして、これが私が完成させようとしているコードです。

// Get info from database and load it.
const char *database_path = [databasePath UTF8String];
sqlite3_stmt *statement;

if(sqlite3_open(database_path, &contactDB) == SQLITE_OK){

    NSString *SQLquery = [NSString stringWithFormat:@"SELECT * FROM RECORDED_WEIGHTS ORDER BY TIME DESC"];

    const char *query_statement = [SQLquery UTF8String];


    if(sqlite3_prepare_v2(contactDB, query_statement, -1, &statement, NULL) == SQLITE_OK){

        // Please help me execute statement and get results into useable format here.




    }

    sqlite3_finalize(statement);

}
sqlite3_close(contactDB);

前もって感謝します。

4

1 に答える 1