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



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

这将用于我正在制作的一个简单的Trivia游戏;我稍后将创建一个随机方法,它将随机选择行。

我一直在与这个问题斗争了几个星期,我已经通过了大量的教程,但他们都处理在表视图中显示数据,我想在基于视图的应用程序中简单地在文本字段上显示它。我在这一点上相当困惑,所以从加载数据库到在文本字段中显示数据的任何帮助都会非常感激!

谢谢!

链接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"];

最新更新