将SQLite数据库从特定行提取到文本字段中

时间:2011-04-05 15:59:04

标签: database xcode ios sqlite uitextfield

我正在尝试连接到SQLite数据库并且有一个方法指定数据库中的特定行(数据库中的第一列是“ID”并且是主键)然后从其他几列中提取信息在该行中并将其显示在文本字段中。

这将用于我正在制作的简单的琐事游戏;我稍后会制作一个随机选择行的随机方法。

我一直在努力解决这个问题几个星期,我已经完成了大量的教程,但所有这些教程都处理在表格视图中显示数据,我想在基于视图的应用程序中的文本字段上显示它。我在这一点上相当困惑,所以从加载数据库到在文本字段中显示数据开始的任何帮助都会非常感激!

谢谢!

1 个答案:

答案 0 :(得分:0)

链接到libsqlite3.dylib(并导入<sqlite3.h>)以获取SQLite的强大功能。有一些轻量级的Objective-C前端,我建议你选择一个。在此示例中,我使用fmdb(https://github.com/ccgus/fmdb)从先前创建的数据库中读取人员的姓名:

NSString* docsdir = [NSSearchPathForDirectoriesInDomains( 
    NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
NSString* dbpath = [docsdir stringByAppendingPathComponent:@"people.db"];
FMDatabase* db = [FMDatabase databaseWithPath:dbpath];
if (![db open]) {
    NSLog(@"Ooops");
    return;
}
FMResultSet *rs = [db executeQuery:@"select * from people"];
while ([rs next]) {
    NSLog(@"%@ %@", 
        [rs stringForColumn:@"firstname"], 
        [rs stringForColumn:@"lastname"]);
}
[db close];
/* output:
Snidely Whiplash
Dudley Doright
*/

这说明了与数据库交谈;知道SQL取决于你(并且是一个不同的主题)。您可以在应用程序包中包含以前构建的SQLite文件,但不能在那里写入;解决方案是在开始使用之前将其从应用程序包中复制到另一个位置,例如Documents目录。

最后,要将字符串放入文本字​​段(UITextField),请设置其text属性。因此,例如,不是上面显示的while循环,我记录数据库结果,我可以使用这些结果来设置文本字段值:

myTextField.text = [rs stringForColumn:@"firstname"];
myOtherTextField.text = [rs stringForColumn:@"lastname"];