Привет, ребята, я просто играю с SQLite, так что для меня это ново.У меня есть представление, в котором данные о людях могут быть сохранены и найдены.Функция сохранения и функция поиска работают отлично.Теперь у меня есть новое представление с табличным представлением в нем.Я хочу получить всех людей в таблице контактов и заполнить ею список.
До сих пор у меня есть:
-(void)viewWillAppear:(BOOL)animated {
const char *dbpath = [databasePath UTF8String];
sqlite3_stmt *statement;
if (sqlite3_open(dbpath, &contactDB) == SQLITE_OK)
{
NSLog(@"Opened DB");
NSString *querySQL = [NSString stringWithFormat:@"SELECT name FROM contacts"];
const char *query_stmt = [querySQL UTF8String];
NSLog(@"could not prepare statement: %s\n", sqlite3_errmsg(contactDB));
if (sqlite3_prepare_v2(contactDB, query_stmt, -1, &statement, NULL) == SQLITE_OK)
//if (sqlite3_step(query_stmt) == SQLITE_DONE)
{
//NSLog(@"SQLite OK");
NSLog(@"SQLite ok");
//if (sqlite3_step(statement) == SQLITE_ROW)
//{
while(sqlite3_step(statement) == SQLITE_ROW) {
NSLog(@"SQLite ROW");
NSString *person = [[NSString alloc] initWithUTF8String:(const char *) sqlite3_column_text(statement, 0)];
[personsList addObject:person];
}
//} else {
// NSLog(@"Emtpy list");
//}
sqlite3_finalize(statement);
}
sqlite3_close(contactDB);
}
NSLog(@"Calling reload");
NSLog(@"%@", personsList);
[tabelView reloadData];
}
Это все в viewWillAppear.Когда представление загружено и выполнено, журнал сообщает: 2011-05-06 10:45:26.976 database[1412:207] Opened DB
2011-05-06 10:45:26.978 database[1412:207] could not prepare statement: not an error
2011-05-06 10:45:26.979 database[1412:207] Calling reload
2011-05-06 10:45:26.979 database[1412:207] (
)
Так что, похоже, утверждение не является ошибкой, но sqlite3_prepare_v2
в конце концов не SQL_OK.Любая помощь?
РЕДАКТИРОВАТЬ: В предыдущем представлении оператор для создания человека: @"INSERT INTO CONTACTS (name, address, phone) VALUES (\"%@\", \"%@\", \"%@\")", name.text, address.text, phone.text];
Оператор для поиска кого-то: @"SELECT address, phone FROM contacts WHERE name=\"%@\"", name.text];
Эти два оператора работаюти данные отображаются.