нуб, просящий о помощи после дня головокружения ....
Я работаю над приложением с базой данных sqlite3 с одной базой данных и двумя таблицами.Теперь я подошел к шагу, где я хочу выбрать из таблицы с аргументом.Код здесь:
-(NSMutableArray*) getGroupsPeopleWhoseGroupName:(NSString*)gn;{
NSMutableArray *groupedPeopleArray = [[NSMutableArray alloc] init];
const char *sql = "SELECT * FROM Contacts WHERE groupName='?'";
@try {
NSArray * paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES);
NSString *docsDir = [paths objectAtIndex:0];
NSString *theDBPath = [docsDir stringByAppendingPathComponent:@"ContactBook.sqlite"];
if (!(sqlite3_open([theDBPath UTF8String], &database) == SQLITE_OK))
{ NSLog(@"An error opening database."); }
sqlite3_stmt *st;
NSLog(@"debug004 - sqlite3_stmt success.");
if (sqlite3_prepare_v2(database, sql, -1, &st, NULL) != SQLITE_OK)
{ NSLog(@"Error, failed to prepare statement."); }
//DB is ready for accessing, now start getting all the info.
while (sqlite3_step(st) == SQLITE_ROW)
{
MyContacts * aContact = [[MyContacts alloc] init];
//get contactID from DB.
aContact.contactID = sqlite3_column_int(st, 0);
if (sqlite3_column_text(st, 1) != NULL)
{ aContact.firstName = [NSString stringWithUTF8String:(char *) sqlite3_column_text(st, 1)]; }
else { aContact.firstName = @""; }
// here retrieve other columns data ....
//store these info retrieved into the newly created array.
[groupedPeopleArray addObject:aContact];
[aContact release];
}
if(sqlite3_finalize(st) != SQLITE_OK)
{ NSLog(@"Failed to finalize data statement."); }
if (sqlite3_close(database) != SQLITE_OK)
{ NSLog(@"Failed to close database."); }
}
@catch (NSException *e) {
NSLog(@"An exception occurred: %@", [e reason]);
return nil; }
return groupedPeopleArray;}
MyContacts - это класс, в который я помещаю все переменные записи.
Моя проблема в том, что sqlite3_step (st) всегда возвращает SQLITE_DONE, так что я никогда не смогуполучить myContacts.(Я проверил это, проверив возвращаемое значение).
Что я здесь не так делаю?
Заранее большое спасибо!