如何解决使用SQLite for iPhone从数据库中获取字符串
|| 我有一个教程中的代码。我想知道如何修改它,以便它不会从数据库中读取双精度字,而只是读取一个字符串。if(detailStmt == nil) {
const char *sql = \"Select price from Coffee Where CoffeeID = ?\";
if(sqlite3_prepare_v2(database,sql,-1,&detailStmt,NULL) != SQLITE_OK)
NSAssert1(0,@\"Error while creating detail view statement. \'%s\'\",sqlite3_errmsg(database));
}
sqlite3_bind_int(detailStmt,1,coffeeID);
if(SQLITE_DONE != sqlite3_step(detailStmt)) {
//Get the price in a temporary variable.
NSDecimalNumber *priceDN = [[NSDecimalNumber alloc] initWithDouble:sqlite3_column_double(detailStmt,0)];
//Assign the price. The price value will be copied,since the property is declared with \"copy\" attribute.
self.price = priceDN;
//Release the temporary variable. Since we created it using alloc,we have own it.
[priceDN release];
}
我很确定需要更改的行是:
sqlite3_bind_int(detailStmt,coffeeID);
NSDecimalNumber *priceDN = [[NSDecimalNumber alloc] initWithDouble:sqlite3_column_double(detailStmt,0)];
我需要使用sqlite3_bind_text和sqlite3_column_text,但我不确定如何正确更改参数。
预先感谢您的帮助!
解决方法
==新更新的答案==
我使用SQL Lite的方式与您使用的有所不同。我从未使用过
sqlite3_bind_text
。我的建议是将您的代码段替换为我提供的代码段。我试图使其涵盖您的整个代码部分。它可能需要调整一两次。
下面的解决方案应与字段和行全面工作。您只需要在while(sqlite3_step(detailStmt) == SQLITE_ROW)
循环中使用适当的sqlite3_column_text
,sqlite3_column_double
,sqlite3_column_int
或其他类型即可。如果只需要第一行,则可以将while循环更改为ѭ7
if(detailStmt == nil) {
const char *sql = \"Select threadtxt from Coffee Where CoffeeID = ?\";
}
if (sqlite3_prepare_v2(database,sql,-1,&detailStmt,NULL) == SQLITE_OK)
{
// loop through the results and add them to the array
while(sqlite3_step(detailStmt) == SQLITE_ROW)
{
// read the data from the result row
NSString *nameString = [NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement,0)];
self.threadtxt = nameString;
}
} else {
NSAssert1(0,@\"Error while getting the price of coffee. \'%s\'\",sqlite3_errmsg(database));
}
// Release the compiled statement from memory
sqlite3_finalize(detailStmt);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。