スポンサーリンク

【Swift】SQLiteを使用する方法ご紹介。〜 追加・更新・削除・取得 〜

Swift
スポンサーリンク

今回の記事は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操作の方で詳しく記載しているので下記記事を参考にしてみてください。

C#でデータベースを安全に操作

本記事を読んでいただき感謝です。サイトを訪れていただいた方はプログラミング勉強中かと思いますのでプログラミング勉強のコツを合わせてご紹介。

スポンサーリンク
スポンサーリンク
スポンサーリンク

ブログに関しては500円程度かかりますが、それ以外は無料です。知識の吸収と並行してアウトプットは非常に効率が良いです。テックアカデミーに関しては講座レベルが高いにも関わらず、無料体験や人気口座も大幅値下げがあるので、重点的に学びたいものを無料体験してみてください。

転職時にも、エンジニアからテックアカデミー・Paizaは認知度が高いので、未経験入社採用を行う際履歴書で目に留まります。特にPaizaのスキルレベルA・SなどはIT業界でも評価されます。

テックアカデミー・Paizaの無料登録ができる期間中にぜひご利用してみてください。私も活用経験ありです。

Swift
スポンサーリンク
スポンサーリンク
ともぶろぐ

コメント

  1. […] 「【Swift】SQLiteの使い方。」 […]

  2. […] 「SwiftでSQLiteを使用する方法」 […]

タイトルとURLをコピーしました