今回の記事はSwiftを使用してSQLiteにテーブル作成、データ追加・更新・削除・取得を行う方法に関してご紹介します。データベース初心者でも分かりやすいように記事を記載していくので是非参考にしてみてください。
SQLiteでデータベース・テーブル作成
まずは基本となるデータベースの作成とテーブル設定です。
まずは下記でライブラリーをインポートします。
import SQLite3
var db: OpaquePointer?
let dbfile: String = "sample.db"
以下は関数にしてあるので適宜使用したい箇所で記載すれば使用できます。
func openDB() {
let fileURL = try! FileManager.default.url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: false).appendingPathComponent(self.dbfile)
if sqlite3_open(fileURL.path, &db) != SQLITE_OK {
print("DBファイルが見つからず、生成もできません。")
} else {
print("DBファイルが生成できました。(対象のパスにDBファイルが存在しました。)")
}
}
データベースをこれで作成できます。
func createTable() {
let createTable = "CREATE TABLE sampleTable (name TEXT, age INTEGER)"
if sqlite3_exec(db, createTable, nil, nil, nil) != SQLITE_OK {
print("テーブルの作成に失敗しました。")
} else {
print("テーブルが作成されました。")
}
}
これでデータテーブルを作成できます。
ではデータの操作に進んでいきます。
SQLiteでデータ追加
func insert() {
var stmt: OpaquePointer?
let queryString = "INSERT INTO sampleTable (name, age) VALUES ('aaa', 12)"
// クエリを準備する
if sqlite3_prepare(db, queryString, -1, &stmt, nil) != SQLITE_OK{
let errmsg = String(cString: sqlite3_errmsg(db)!)
print("error preparing insert: \(errmsg)")
return
}
// クエリを実行する
if sqlite3_step(stmt) != SQLITE_DONE {
let errmsg = String(cString: sqlite3_errmsg(db)!)
print("failure inserting hero: \(errmsg)")
return
}
print("データが登録されました")
}
SQLiteでデータ更新
func update() {
var stmt: OpaquePointer?
let queryString = "UPDATE sampleTable SET age = 99 WHERE name = 'ccc'"
// クエリを準備する
if sqlite3_prepare(db, queryString, -1, &stmt, nil) != SQLITE_OK{
let errmsg = String(cString: sqlite3_errmsg(db)!)
print("error preparing insert: \(errmsg)")
return
}
// クエリを実行する
if sqlite3_step(stmt) != SQLITE_DONE {
let errmsg = String(cString: sqlite3_errmsg(db)!)
print("failure inserting hero: \(errmsg)")
return
}
print("データが更新されました")
}
SQLiteでデータ削除
func delete() {
var stmt: OpaquePointer?
let queryString = "DELETE FROM sampleTable WHERE name = 'aaa'"
// クエリを準備する
if sqlite3_prepare(db, queryString, -1, &stmt, nil) != SQLITE_OK{
let errmsg = String(cString: sqlite3_errmsg(db)!)
print("error preparing insert: \(errmsg)")
return
}
// クエリを実行する
if sqlite3_step(stmt) != SQLITE_DONE {
let errmsg = String(cString: sqlite3_errmsg(db)!)
print("failure inserting hero: \(errmsg)")
return
}
print("データが削除されました")
}
SQLiteでデータ取得
func select(){
let queryString = "SELECT * FROM sampleTable"
var stmt:OpaquePointer?
// クエリを準備する
if sqlite3_prepare(db, queryString, -1, &stmt, nil) != SQLITE_OK{
let errmsg = String(cString: sqlite3_errmsg(db)!)
print("error preparing insert: \(errmsg)")
return
}
// クエリを実行し、取得したレコードをループする
while(sqlite3_step(stmt) == SQLITE_ROW){
let name = String(cString: sqlite3_column_text(stmt, 0))
let age = sqlite3_column_int(stmt, 1)
print("name : \(name)")
print("age : \(age)")
}
}
今回の記事は以上です。SQL文に関してはベタガキですので少し改善するべきであると考えられます。詳しくはC#によるSQL操作の方で詳しく記載しているので下記記事を参考にしてみてください。
コメント
[…] 「【Swift】SQLiteの使い方。」 […]
[…] 「SwiftでSQLiteを使用する方法」 […]
はじめまして、Swift初心者です。Sqliteの扱い方が分からずに苦悩していましたが、こちらの記事を参考にさせてもらい、うまくできました。
ありがとうございました!
参考にできる記事を書けてよかったです。
write my essay canada
【Swift】SQLiteを使用する方法ご紹介。〜 追加・更新・削除・取得 〜