2011-10-20 14 views
0

次のコードを使用して、Sqlite3データベースから行を読み取ります。iPhoneアプリケーションSqlite3データベースからデータを読み取る

if(sqlite3_open([[AppHelper getDatabasePath] UTF8String], &database) == SQLITE_OK) 
{ 
    const char *sqlStatement = "select * from customers"; 
    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)]; 

      NSLog(@"%@",firstName); 
     } 
    } 

    sqlite3_finalize(compiledStatement); 
} 

sqlite3_close(database); 

コードがif(sqlite3_prepare_v2 ....にはなりません。調子。

誰でも私が間違っていることを教えてもらえますか?私は.sqlファイルを私のドキュメントディレクトリに置いて、1つのレコードを含んでいます。

UPDATE 1:

私はシミュレータでアプリを実行していると私は、サポートファイルのフォルダ内の私のmyDatabase.sqlファイルを置きました。

UPDATE 2:

エラーは、「そのようなテーブルの顧客」ではありませんが、私は、データベース内の顧客テーブルを持っていることがわかります。私はFireFox Sqlite Managerを使ってcustomersテーブルを見ました。

+0

私はsqlite3_prepare_v2のリターンコードをチェックしたいと思います。それは何が間違っているかのヒントを与えるはずです。 – Tom

+0

ありがとう@Tom。私はリターンコードを印刷し、それは1です.1は何を意味しますか? – azamsharp

+0

1は、SQLエラーまたはデータベースの欠落を意味します。 – azamsharp

答えて

1

解決策は、シミュレータが空のデータベースにぶら下がっていたため、シミュレータを閉じる/リセットすることでした。シミュレータの内容がリセットされると、みんなが再び働き始めました!

+1

このデータベースに書き込む場合は、データベースをresourcesフォルダからユーザーのDocumentsディレクトリにコピーする必要があります。そうしないと、DBに書き込む際に問題が発生します。 –

0

あなたはsqliteファイルを変更すると、常にアプリケーションを削除して再度インストールする必要があります。または、新しいテーブルをアップグレードする場合は、古いテーブルを変更するか、すべてのデータを新しいファイルに移動します。

関連する問題