【问题标题】:iOS & SQLite: How to store database entry as NSString variableiOS & SQLite:如何将数据库条目存储为 NSString 变量
【发布时间】:2012-07-29 10:30:08
【问题描述】:
我对任何类型的编程都是全新的,并且在过去的一个月里已经成功地学习了足够的 Obj-C 和 C 来编写一个功能正常的应用程序。但是,在我的应用程序完成之前,我只剩下一个问题。我的数据存储在我需要在我的应用程序中使用的 sqlite 数据库中。我需要能够从数据库中选择数据并将其存储为 NSString 变量,以便可以在我的应用程序的输出中使用它。
我搜索了许多教程,但发现其中大部分都是针对在应用程序中创建数据库并更改其内容的。我只需要调用信息并将其存储为变量。
任何指向相关教程的链接以及任何建议都将不胜感激。
【问题讨论】:
标签:
xcode
cocoa-touch
ios5
sqlite
xcode4.3
【解决方案1】:
假设您已将字符串作为 utf-8 数据存储在 sqlite db 中,您将从查询结果中提取它并制作一个像这样的 NSString:
#import <sqlite3.h>
// Open the db
sqlite3 *db;
int result = sqlite3_open("path/to/your/db", &db);
// Prepare your query
sqlite3_stmt *statement;
result = sqlite3_prepare_v2(db, "select * from table where...;", -1, &statement, NULL);
// Process each row of the response
while (SQLITE_ROW == ((result = sqlite3_step(statement))))
{
NSString *string = @"";
// Pull out a given column as a text result
char *c = sqlite3_column_text(statement, yourStringColumnIndex);
// Make an NSString out of it
if (c)
string = [NSString stringWithUTF8String:c];
NSLog(@"%@", string);
}
// Release the prepared statement and close the db
sqlite3_finalize(statement);
sqlite3_close(db);
显然你应该检查错误结果并做出适当的响应。