我有一张包含TEXT
,INTEGER
,REAL
和其他数据类型的表格。
我写了一个通用的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
数据类型。
答案 0 :(得分:1)
这些例程尝试在适当的位置转换值。 [...] 下表详细介绍了应用的转换:
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