2012-02-25 3 views
1

SQLite関数sqlite3_prepare_v2に問題があります。常に1エラーコードを返します。私はSQLiteラッパーSQLitemanagerIOS4を使用しています。以前はラッパーを使用せずに同じエラーが発生しましたが、文がUTF8でエンコードされていてもエラーは発生していたため、切り替えました。私はデバッガでデータベースパスをチェックして、それは正しいので、私は失われている...ところで、データベースが正しく開いて閉じている。SQLiteはクエリをコンパイルしません - Objective C

ここでは、コードのPICEである:あなたの助けのための

- (NSArray *)getRowsForQuery:(NSString *)sql { 

    NSMutableArray *resultsArray = [[NSMutableArray alloc] initWithCapacity:1]; 

    if (db == nil) { 
     [self openDatabase]; 
    } 

    sqlite3_stmt *statement;  
    const char *query = [sql UTF8String]; 
    int prepareStatus = sqlite3_prepare_v2(db, query, -1, &statement, NULL); 


    while (sqlite3_step(statement) == SQLITE_ROW) { 

感謝します。ここで

彼らはラッパーオブジェクトに渡されたパラメータです:

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    dbManager = [[SQLiteManager alloc] initWithDatabaseNamed:@"XLO.sqlite"]; 

    SArray *provinciaArray = [dbManager getRowsForQuery:[NSString stringWithFormat:@"SELECT provincia FROM provincias;"]]; 

ありがとう!

ピーターは、ここにある:すべての

- (NSError *) openDatabase { 

    NSError *error = nil; 

    NSString *databasePath = [self getDatabasePath]; 

    const char *dbpath = [databasePath UTF8String]; 

    #ifdef DEBUG 
     NSLog(@"SQL result: <%s>", dbpath); 
    #endif 

    int result = sqlite3_open(dbpath, &db); 
    if (result != SQLITE_OK) { 
      const char *errorMsg = sqlite3_errmsg(db); 
      NSString *errorStr = [NSString stringWithFormat:@"The database could not be opened: %@",[NSString stringWithCString:errorMsg encoding:NSUTF8StringEncoding]]; 
      error = [self createDBErrorWithDescription:errorStr andCode:kDBFailAtOpen]; 
    } 

    return error; 
} 

多くの感謝!

+1

クエリはどのように見えますか?パラメータdbとクエリを準備するためのコードを表示できますか? –

+0

こんにちは、私はあなたが要求したコードで答えを更新しました。ありがとう! – roof

+0

sqlite3_errmsg(db)をログに出力して、エラーの詳細を表示することをお勧めします。 –

答えて

1

データベーステーブルが存在しないと言っているため、自分が思っているパスにデータベースを開いていない可能性があります。 sqliteはパッシブであることを忘れないでください。最初の書き込み時にデータベースが作成されます。

シミュレータでアプリを実行し、パスをプリントアウトします。ターミナルでそのパスに行き、sqliteのcmdlineを使ってdbが存在し、テーブルがあることを確認します。

+0

こんにちはすべて、データベースが正しいパスになかった...今それは正常に働いている!申し訳ありませんが、あなたのお手伝いをしてくれてありがとう – roof

+0

偉大な - あなたは答えとしてそれをマークできますか?ありがとう – bryanmac

関連する問題