使用SQLite3,如果你创建一个这样的表:
CREATE TABLE MyTable (
id int primary key,
--define other columns here--
)
结果sqlite3_column_type(0)
总是返回SQLITE_NULL
。
如果我read on a bit,这可能是设计使然,因为此列实际上是内部rowid
字段的别名。
但是,确定某个列的编程方式是/ rowid
字段的别名是什么?
(也许相关,我可以使用sqlite3_column_type(x)==SQLITE_NULL
来确定当前记录的字段是否包含NULL
吗?)
答案 0 :(得分:2)
根据http://www.sqlite.org/draft/lang_createtable.html#rowid
PRIMARY KEY列只会成为 如果声明了整数主键 类型名称正好是“INTEGER”。其他 整数类型名称,如“INT”或 “BIGINT”或“SHORT INTEGER”或 “UNSIGNED INTEGER”导致初级 键列表现为普通的 具有整数亲和性的表列 唯一索引,而不是别名 rowid。
所以在你的情况下它是“int”所以无效的别名