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 かそれ以外かで処理をする処理を、自然流れで記述できると思います。