SQLite から取得した値が NULL か調べる

SPECIAL


SQLite から取得した値が NULL か調べる

iPhone アプリでは iPhone プログラムで SQLite を使用する で記したようにして SQLite を使用することができます。

このように sqlite3_step 関数を使って SQL クエリを実行すると、sqlite3_column_int 関数などを使って、実行結果から値を取得できるようになっています。

 

ここでもし、実行結果が NULL であるかを知りたい場合には、次のようにします。

// このようにすると、列の値が NULL かどうかを判定できます。

if (sqlite3_column_type(statement, index) != SQLITE_NULL)

{

}

このように、列のインデックス番号を指定して sqlite3_column_type 関数を呼び出すことで、その列から取得できた値の種類を知ることができます。

ちなみにこの sqlite3_column_type 関数は、戻り値として SQLITE_INTEGER, SQLITE_FLOAT, SQLITE_TEXT, SQLITE_BLOB, SQLITE_NULL のどれかを返すようでした。

 

NULL 判定も必要だけれど、NULL でなければ値をとりたいといった場合には、いったん sqlite3_value 型で値を取得して、NULL かどうかを調べる方法もあります。

// NULL かどうかを判定するために、まずは sqlite3_value 型で値を取得します。

sqlite3_value* value = sqlite3_column_value(statement, index);

 

// 先ほど取得した sqlite3_value 型の値を使って、それが NULL かどうかを判定できます。

if (sqlite3_value_type(value) != SQLITE_NULL)

{

// NULL でなければ、取得した sqlite3_value から、たとえば int 型の値を取得します。

number = sqlite3_value_int(value)

}

このようにすれば、列の値を取得してそれが NULL かそれ以外かで処理をする処理を、自然流れで記述できると思います。