我有一个包含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
数据类型。
最佳答案
documentation说:
这些例程尝试在适当的地方转换值。 […]
下表详细介绍了应用的转换:
内部类型请求的类型转换
NULL TEXT结果是NULL指针
INTEGER TEXT整数的ASCII呈现
FLOAT TEXT浮点数的ASCII渲染
BLOB TEXT如果需要,请添加零终止符