en mi aplicación, estoy usando una base de datos SQLite para almacenar algunos datos. Uno de los campos enteros es opcional, por lo que se define así:
Tengo la siguiente instrucción CREATE :
CREATE TABLE IF NOT EXISTS Test (id INTEGER PRIMARY KEY AUTOINCREMENT, timestamp FLOAT NOT NULL, testProperty INT); Puedo obtener la propiedad flotante usando sqlite3_column_double . Para la columna int podría usar 'sqlite3_column_int' pero esto siempre devuelve un valor (0) incluso si la fila no contiene un valor.
¿Cómo puedo verificar si la fila realmente tiene un valor para esta propiedad?
Tengo el siguiente código para obtener todas las filas:
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)Puede usar sqlite3_column_type() para verificar si es SQLITE_INTEGER o SQLITE_NULL .