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;
}
多くの感謝!
クエリはどのように見えますか?パラメータdbとクエリを準備するためのコードを表示できますか? –
こんにちは、私はあなたが要求したコードで答えを更新しました。ありがとう! – roof
sqlite3_errmsg(db)をログに出力して、エラーの詳細を表示することをお勧めします。 –