2013-04-10 3 views
0

다음 코드 중 누락 된 부분을 채우기에 친절한 사람이있을 수 있습니다. sqlite3_step을 사용하여 sqlite 문을 실행하고 각 결과 행을 반복하고 유용한 형식으로 데이터를 저장하는 데 어려움을 겪고 있습니다. 여기 sqlite_step 결과를 반복하는 방법

여기

// 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"; 
    } 
} 

그리고 완료하는 데 애 쓰고 코드는 (데이터베이스가 두 colums입니다) 데이터베이스를 생성하는 코드입니다;

// 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); 

미리 감사드립니다. 다른 열 유형에 대한 문서에서

while(sqlite3_step(statement) == SQLITE_ROW) 
{ 
    // int value 
    int intValue = sqlite3_column_int(statement,fieldIndex); 

    // string value 
    NSString* stringValue; 
    if (sqlite3_column_type(dbps, fieldIndex) != SQLITE_NULL) 
    { 
     const char *c = (const char *)sqlite3_column_text(dbps, fieldIndex); 
     if (c) 
     { 
      stringValue = @(c); 
     } 
    } 

     ... etc... 
} 

봐 :

답변

0

은 당신이 뭔가를 할 싶어요. 또한 다른 objective-c 래퍼를보고 데이터베이스에 액세스하는 방법에 대한 아이디어를 얻을 수 있습니다.

관련 문제