等效于 sqlite3_column_int 以获得可能的 NULL 值
Equivalent of sqlite3_column_int to get possible NULL values
在我的应用程序中,我使用 SQLite
数据库来存储一些数据。其中一个整数字段是可选的,因此定义如下:
我有以下 CREATE
声明:
CREATE TABLE IF NOT EXISTS Test (id INTEGER PRIMARY KEY AUTOINCREMENT, timestamp FLOAT NOT NULL, testProperty INT);
我可以使用 sqlite3_column_double
获得浮点数 属性。对于 int 列,我可以使用 'sqlite3_column_int' 但这总是 returns 一个值 (0),即使该行不包含值。
我如何检查该行是否确实具有此 属性 的值?
我有以下代码来获取所有行:
var statement: OpaquePointer? = nil
let sql = "SELECT * FROM Test;"
sqlite3_prepare_v2(self.connection, sql, -1, &statement, nil)
while sqlite3_step(statement) == SQLITE_ROW
{
let testProperty = sqlite3_column_int(statement, 2) // always returns 0
}
sqlite3_finalize(statement)
您可以使用 sqlite3_column_type()
来检查它是 SQLITE_INTEGER
还是 SQLITE_NULL
。
在我的应用程序中,我使用 SQLite
数据库来存储一些数据。其中一个整数字段是可选的,因此定义如下:
我有以下 CREATE
声明:
CREATE TABLE IF NOT EXISTS Test (id INTEGER PRIMARY KEY AUTOINCREMENT, timestamp FLOAT NOT NULL, testProperty INT);
我可以使用 sqlite3_column_double
获得浮点数 属性。对于 int 列,我可以使用 'sqlite3_column_int' 但这总是 returns 一个值 (0),即使该行不包含值。
我如何检查该行是否确实具有此 属性 的值?
我有以下代码来获取所有行:
var statement: OpaquePointer? = nil
let sql = "SELECT * FROM Test;"
sqlite3_prepare_v2(self.connection, sql, -1, &statement, nil)
while sqlite3_step(statement) == SQLITE_ROW
{
let testProperty = sqlite3_column_int(statement, 2) // always returns 0
}
sqlite3_finalize(statement)
您可以使用 sqlite3_column_type()
来检查它是 SQLITE_INTEGER
还是 SQLITE_NULL
。