2011-02-02 29 views
0

iPhoneシミュレータでSQLiteに問題があります。私はそれを単純なテストアプリに縮小しました。 sqlite3_prepare_v2が失敗します。しかし、実際のデバイスは正常に動作します。SQLiteはデバイス上で動作しますが、シミュレータでは動作しません。 sqlite3_prepare_v2が失敗する

私はsqlite3を使用してデータベースを作成し、それを自分のリソースに追加しました。私のコードでは、viewDidLoadで、私はcreateEditableCopyOfDatabaseIfNeededを呼び出します(これは広く使われている一般的な方法です)。そして、私は次のように呼び出す: - シミュレータ上

- (void) queryDatabase { 

    sqlite3 *database; 

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *documentsDirectory = [paths objectAtIndex:0]; 
    NSString *path = [documentsDirectory stringByAppendingPathComponent:@"myDatabase.sql"]; 
    if (sqlite3_open([path UTF8String], &database) == SQLITE_OK) { 

     NSMutableString *result = [[NSMutableString alloc] init]; 
     const char *sqlStatement = "select * from people"; 
     sqlite3_stmt *compiledStatement; 
     if (sqlite3_prepare_v2(database, sqlStatement, -1, &compiledStatement, NULL) == SQLITE_OK) { 

      while(sqlite3_step(compiledStatement) == SQLITE_ROW) { 
      NSString *firstname = [NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement, 1)]; 
      NSString *surname = [NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement, 2)]; 
      [result appendFormat:@"%@ %@\n", firstname, surname]; 
     } 
    [resultView setText:result]; 
    } 
    else { 
     [resultView setText:@"Problem querying database"]; 
    } 

    sqlite3_finalize(compiledStatement); 
    [result release]; 

    } 

    sqlite3_close(database); 
} 

、sqlite3_prepare_v2はSQLITE_OK

答えて

1

を使用できるエラーを見つけるために 。おそらくあなたの問題を解決するでしょう。

3

を返しませんが、教えてくださいすることができ、あなたはどのようなエラーを取得していますか?あなたは前に、すべてのターゲットが&実行を構築クリーンシミュレータ&からアプリのアイコンを削除したことを確認し

if (sqlite3_prepare_v2(database, sqlStatement, -1, &compiledStatement, NULL) != SQLITE_OK) { 
    NSAssert1(0, @"Error: failed to prepare statement with message '%s'.", sqlite3_errmsg(database)); 
0

シミュレータのアプリをアンインストールして再インストールすると問題が発生することがあります。

関連する問題