読者です 読者をやめる 読者になる 読者になる

ごらくらいふ

プログラミングしたりゲームしたり

SQLite3 datatype in Objective-C

SQLite3 の型に関することをまとめた。

SQLite内部で使うデータ型

  • INTEGER
    • 整数
  • REAL
    • 実数
  • TEXT
    • 文字列
  • BLOB
    • バイナリデータ
  • NULL
    • NULL

使用例

CREATE users (
    id INTEGER NOT NULL,
    name TEXT,
    weight REAL,
    face BLOB
);

Objective-Cが受け取る時のデータ型

SELECT文の結果を取得する際、データ型にあわせて取り出すための関数を使い分ける必要がある。

データ型ごとに識別コードが定義されており、 それは int sqlite3_column_type(sqlite3_stmt*, int iCol); で取得できる。

また、識別コードは define で名前が付与されている。

  • SQLITE_INTEGER
    • 値は1
    • SQLiteでの INTEGER に対応する。
    • データ取り出しには sqlite3_int64 sqlite3_column_int64(sqlite3_stmt*, int iCol); を使う。
  • SQLITE_FLOAT
    • 値は2
    • SQLiteでの REAL に対応する。
    • データ取り出しには double sqlite3_column_double(sqlite3_stmt*, int iCol); を使う。
  • SQLITE_TEXT
    • 値は3
    • SQLiteでの TEXT に対応する。
    • データ取り出しには const unsigned char *sqlite3_column_text(sqlite3_stmt*, int iCol); を使う。
  • SQLITE_BLOB
    • 値は4
    • SQLiteでの BLOB に対応する。
    • データ取り出しには const void *sqlite3_column_blob(sqlite3_stmt*, int iCol); を使う。
  • SQLITE_NULL
    • 値は5
    • SQLiteでの NULL に対応する。

資料URL

SQLiteのデータ型について https://www.sqlite.org/datatype3.html

データ型の識別コードについて https://www.sqlite.org/c3ref/c_blob.html

データを取り出す関数について https://www.sqlite.org/c3ref/column_blob.html