У меня проблемы с функцией SQLite sqlite3_prepare_v2, она всегда возвращает 1 код ошибки. Я использую оболочку SQLite SQLitemanager для iOS4. Ранее та же самая ошибка произошла без использования оболочки, я переключился на нее, потому что, несмотря на то, что оператор был закодирован в UTF8, ошибка все же произошла Я проверил путь к базе данных с помощью отладчика, и он правильный, поэтому я потерян ... Кстати, база данных правильно открывается и закрывается.
Вот кусочек кода:
- (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;
}
Большое спасибо всем!