我有一个包含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数据类型。

最佳答案

documentation说:


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

内部类型请求的类型转换
NULL TEXT结果是NULL指针
INTEGER TEXT整数的ASCII呈现
FLOAT TEXT浮点数的ASCII渲染
BLOB TEXT如果需要,请添加零终止符

10-05 20:40
查看更多