2009-07-10 19 views
2

以下のコードでは、SQLiteデータベースに接続していますが、SELECTクエリが機能しませんでした。iphone SQLite Selectクエリが機能しない

私があなたを助けてくれることを願っています。これは間違ってい

if(sqlite3_open([databasePath UTF8String], &database) == SQLITE_OK) { 
    // Setup the SQL Statement and compile it for faster access 
    const char *sqlStatement = "select name,score from game Where name='interclock'"; 
    sqlite3_stmt *compiledStatement; 
    if(sqlite3_prepare_v2(database, sqlStatement, -1, &compiledStatement, NULL) == SQLITE_OK) { 



     // Loop through the results and add them to the feeds array 
     //while(sqlite3_step(compiledStatement) == SQLITE_ROW) { 
     if(sqlite3_step(compiledStatement) == SQLITE_ROW) { 
      // Read the data from the result row 

      NSString *aName =[NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement, 1)]; 
      NSString *aScore =[NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement, 2)]; 

      UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Sonuç" message:[NSString stringWithFormat:@"Oyun adı %s Skor:%s",aName,aScore] 
                  delegate:self cancelButtonTitle:@"OK" otherButtonTitles: nil]; 
      [alert show]; 

      //NSString *aName = [NSString stringWithString:(NSString *)sqlite3_column_text(compiledStatement, 2)]; 
      //NSString *aScore = [NSString stringWithString:(NSString *)sqlite3_column_text(compiledStatement, 3)]; 



      // Create a new animal object with the data from the database 
      DatabaseClass *dbOBJ = [[DatabaseClass alloc] initWithName:aName score:aScore]; 

      // Add the animal object to the animals Array 
      [scores addObject:dbOBJ]; 

      [dbOBJ release]; 
     } else { 
      UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error" message:@"SQL Query Dont Work" 
                  delegate:self cancelButtonTitle:@"OK" otherButtonTitles: nil]; 
      [alert show]; 
     } 
    } 
    // Release the compiled statement from memory 
    sqlite3_finalize(compiledStatement); 

} else { 
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error" message:@"No Connection" 
                delegate:self cancelButtonTitle:@"OK" otherButtonTitles: nil]; 
    [alert show]; 
} 
+0

「動作しません」とはどういう意味ですか? 例外?間違った結果ですか?何か? – oxigen

答えて

3

おかげで

NSString *aName =[NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement, 1)]; 
NSString *aScore =[NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement, 2)]; 

NSString *aName =[NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement, 0)]; 
NSString *aScore =[NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement, 1)]; 
0

は、それはあなたが取得したい何列に応じて、正しいことができなければなりません。この例では、データベースのテーブルにid、aName、およびaScoreという3つの列が含まれていると思います。問題があったが、ここではありません。

if(sqlite3_step(compiledStatement) == SQLITE_ROW) {

あなたcompiledStatementが良い値を返すことを確認します。

0

このようなパスを取得する必要があります。

NSString *path = [[NSBundle mainBundle]pathForResource:@"sarkiSozleri"ofType:@"sqlite"]; 
関連する問題