1
我对iOS开发相当新颖。我正在尝试构建在sqllite3 DB中搜索给定搜索词的应用程序。我在绑定参数到该sql语句时遇到了问题。以下是我从数据库读取数据的代码。从UITextfield给出的输入在iPhone中搜索SQLite3 DB
-(void) readPlayersFromDatabase
{
NSString * strTemp=[[NSString alloc]init];
[email protected]"ben";
sqlite3 *database;
players = [[NSMutableArray alloc] init];
if(sqlite3_open([dbPath UTF8String], &database) == SQLITE_OK)
{
char *sqlStatement = "SELECT * FROM Player WHERE LENGTH (lastname)>0 AND LENGTH (firstname)>0 AND (lastname LIKE '%?%' OR firstname LIKE'%?%' OR Height LIKE '%?%' OR Weight LIKE '%?%') ORDER BY lastname,firstname";
sqlite3_stmt *compiledStatement;
if(sqlite3_prepare_v2(database, sqlStatement, -1, &compiledStatement, NULL) == SQLITE_OK)
{
sqlite3_bind_text(compiledStatement, 1, [strTemp UTF8String],-1, SQLITE_TRANSIENT);
sqlite3_bind_text(compiledStatement, 2, [strTemp UTF8String],-1, SQLITE_TRANSIENT);
sqlite3_bind_text(compiledStatement, 3, [strTemp UTF8String],-1, SQLITE_TRANSIENT);
sqlite3_bind_text(compiledStatement, 4, [strTemp UTF8String],-1, SQLITE_TRANSIENT);
while(sqlite3_step(compiledStatement) == SQLITE_ROW)
{
NSString *playerId = [NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement, 0)];
NSString *playerName = [NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement, 1)];
Player *temp = [[Player alloc] initWithID:playerId name:playerName];
[players addObject:temp];
[temp release];
}
}
sqlite3_finalize(compiledStatement);
}
sqlite3_close(database);
}
我最后得到的是玩家的名字吗?以他们的名义。有人可以帮我从这里出去吗。你能告诉我如何在上面的代码中连接UITextfield
输入到strTemp
?
谢谢。
我的第一个问题是,我无法将参数绑定到sqlite语句导致错误的结果集或没有结果集。 – slonkar 2011-06-17 13:53:29