SQLiteデータベースの作り方とFMDB.hファイルのインポート - Swiftで簡単操作
SQLiteデータベースの作成とFMDB.hファイルのインポート
このチュートリアルでは、FMDB.h ファイルをインポートして SQLite データベースを作成する方法を、わかりやすく日本語で説明します。
必要条件
このチュートリアルを進める前に、以下の準備が必要です。
- Xcode
手順
FMDBをプロジェクトに追加する
Xcodeプロジェクトで、 Bridging Header ファイルを作成します。
- Bridging Header ファイルが既にある場合は、次の手順をスキップしてください。
- Xcodeメニューから File > New > File を選択します。
- Header File を選択し、 Next ボタンをクリックします。
- ファイル名に <プロジェクト名>-Bridging-Header.h と入力し、 Finish ボタンをクリックします。
作成した Bridging Header ファイルを開き、以下の行を追加します。
#import <FMDB/FMDatabase.h> #import <FMDB/FMResultSet.h> #import <FMDB/FMDatabaseAdditions.h>
SQLiteデータベースを作成する
以下のコードを含むSwiftファイルを作成します。
import Foundation class DatabaseManager { private var database: FMDatabase! init() { let path = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true).first! let dbPath = URL(fileURLWithPath: path).appendingPathComponent("database.db").path database = FMDatabase(path: dbPath) // データベースを開く if !database.open() { print("データベースを開くことができませんでした") return } // テーブルを作成する if !database.createTable(tableName: "users", withColumns: ["id": "INTEGER PRIMARY KEY", "name": "TEXT", "email": "TEXT"]) { print("テーブルを作成できませんでした") return } } deinit { database.close() } }
上記コードで、以下の処理が行われます。
NSSearchPathForDirectoriesInDomains
関数を使用して、ドキュメントディレクトリのパスを取得します。- 取得したパスに
database.db
という名前のファイルを付加して、データベースファイルのパスを作成します。 FMDatabase
イニシャライザを使用して、データベースファイルへの接続を作成します。database.open()
メソッドを使用して、データベースを開きます。database.createTable()
メソッドを使用して、users
という名前のテーブルを作成します。- テーブルには、
id
、name
、email
という3つの列が含まれます。
データベースを使用する
- このチュートリアルでは、基本的な操作のみを説明しています。
#import <FMDB/FMDatabase.h>
#import <FMDB/FMResultSet.h>
#import <FMDB/FMDatabaseAdditions.h>
DatabaseManager クラス
import Foundation
class DatabaseManager {
private var database: FMDatabase!
init() {
let path = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true).first!
let dbPath = URL(fileURLWithPath: path).appendingPathComponent("database.db").path
database = FMDatabase(path: dbPath)
// データベースを開く
if !database.open() {
print("データベースを開くことができませんでした")
return
}
// テーブルを作成する
if !database.createTable(tableName: "users", withColumns: ["id": "INTEGER PRIMARY KEY", "name": "TEXT", "email": "TEXT"]) {
print("テーブルを作成できませんでした")
return
}
}
deinit {
database.close()
}
}
ユーザーレコードを挿入するコード
let databaseManager = DatabaseManager()
databaseManager.database.executeUpdate("INSERT INTO users (name, email) VALUES (?, ?)", withArguments: ["Taro Yamada", "[email protected]"])
説明
- ユーザーレコードを挿入するコード: このコードは、
databaseManager.database.executeUpdate()
メソッドを使用して、新しいユーザーレコードをusers
テーブルに挿入します。 - DatabaseManager クラス: このクラスは、データベースへの接続と操作を管理します。
init()
イニシャライザは、データベースファイルへの接続を作成し、必要なテーブルを作成します。deinit
デストラクタは、データベースへの接続を閉じます。
- Bridging Header ファイル: このファイルは、SwiftプロジェクトでObjective-Cヘッダーファイルをインポートするために必要です。この例では、
FMDB.h
、FMResultSet.h
、FMDatabaseAdditions.h
ヘッダーファイルをインポートしています。
-
SQLiteライブラリをプロジェクトに追加する
- Xcodeプロジェクトで、 File > Settings を選択します。
- Build Phases タブを選択します。
- Link Binary Libraries セクションをクリックします。
- + ボタンをクリックし、
libsqlite3.dylib
ライブラリを選択します。
-
-
FileManager.default.fileExists(atPath:)
メソッドを使用して、データベースファイルが存在するかどうかを確認します。- ファイルが存在しない場合は、
sqlite3_open()
関数を使用してデータベースファイルを作成します。 sqlite3_exec()
関数を使用して、users
という名前のテーブルを作成します。
-
- この方法は、より簡潔ですが、FMDBライブラリほど多くの
sqlite