【发布时间】:2012-02-26 03:17:25
【问题描述】:
我遵循了有关创建 sqlite 数据库、向其中插入数据和从中搜索数据的教程,并使用以下方法从该数据库中提取数据:
-(IBAction)findContacts{
const char *dbpath = [databasePath UTF8String];
sqlite3_stmt *statement;
if (sqlite3_open(dbpath, &contactDB)==SQLITE_OK) {
NSString *querySQL = [NSString stringWithFormat:@"SELECT adress, phone FROM CONTACTS WHERE name = \"%@\"", [name text]];
status.text = querySQL;
const char *query_stmt = [querySQL UTF8String];
if (sqlite3_prepare_v2(contactDB, query_stmt, -1, &statement, NULL) == SQLITE_OK) {
if (sqlite3_step(statement)==SQLITE_ROW) {
NSString *adressField = [[NSString alloc] initWithUTF8String:(const char *) sqlite3_column_text(statement, 0)];
adress.text = adressField;
NSString *phoneField = [[NSString alloc] initWithUTF8String:(const char *) sqlite3_column_text(statement, 1)];
phone.text = phoneField;
status.text = @"Match Found";
[adressField release];
[phoneField release];}
status.text = @"Match not Found";
adress.text = @"";
phone.text = @"";
sqlite3_finalize(statement);}
sqlite3_close(contactDB);}}
当我编译时,没有错误!没注意!但是不起作用...
我发现是因为
sqlite3_prepare_v2(contactDB, query_stmt, -1, &statement, NULL) == SQLITE_OK)
不相等,代码没有进入 if 语句。我发现当我用
反转条件时sqlite3_prepare_v2(contactDB, query_stmt, -1, &statement, NULL) != SQLITE_OK)
并在 status.text 中看到“未找到匹配项”。但还是没能在里面找到真正的联系方式。
你发现代码有什么问题吗?
提前谢谢...
【问题讨论】:
标签: database sqlite search prepared-statement