使用sqlite3_column_text()获取整数值

时间:2015-05-08 08:27:36

标签: ios sql objective-c sqlite

我有一张包含TEXTINTEGERREAL和其他数据类型的表格。

我写了一个通用的sql函数来使用sqlite3_column_text()读取所有查询的结果,如下所示:

char *dataAsChar = (char *) sqlite3_column_text(compiledStatement, ii);

虽然我应该使用sqlite3_column_int等来读取数值,但上面的代码似乎对我有用。我将数字值作为字符串,然后使用[*numberAsString* intValue]将其转换为int。

由于我使用通用函数来读取我的所有数据库值,这对我来说非常方便。 但是我的代码有什么问题吗?

我可以对每列使用sqlite3_column_type来确定类型并使用适当的函数。假设sqlite3_column_text基本上以TEXT格式返回列值并且不一定需要值本身为TEXT,我是否正确?

我可以看到此实现失败的唯一情况是使用BLOB数据类型。

1 个答案:

答案 0 :(得分:1)

documentation说:

  

这些例程尝试在适当的位置转换值。 [...]   下表详细介绍了应用的转换:

Internal Type  Requested Type  Conversion
NULL           TEXT            Result is a NULL pointer
INTEGER        TEXT            ASCII rendering of the integer
FLOAT          TEXT            ASCII rendering of the float
BLOB           TEXT            Add a zero terminator if needed