スポンサーリンク

【Swift】SQLiteで取得するデータの個数を取得する方法ご紹介。

Swift
スポンサーリンク

今回の記事はSwiftでSQLiteを使用する際にデータの個数を取得する方法をご紹介する記事です。初心者にも分かりやすいように記載してくので是非参考にしてみてください。

スポンサーリンク

SwiftでSQLiteを使用する手順

まず下記で既存のDBに接続します。

var db: OpaquePointer?
let dbfile: String = "[指定のDBネーム].db"
    
func openDB()->Bool {
    let fileURL = try! FileManager.default.url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: false).appendingPathComponent(self.dbfile)
    sqlite3_open(fileURL.path, &db)
}

DBにデータが入っていない場合やDB、テーブルがない場合は下記サイトにしたがって何かしらデータを入れてからの操作になります。

SwiftでSQLiteを使用する方法

SQLIteで取得するデータの個数を取得

個数を取得する方法は2通りあります。一つはSQLiteの文でカウントを取得する方法です。ただし、こちらはSelectの他にメソッドを作る必要があるのでそれよりは全てのデータをリストとして取得した上でその列数を取得する方法です。

今回はそちらを使用します。

 var lists[[String]] = [[]]  
 func select(query:String)->[[String]] {
    var stmt:OpaquePointer?
            
    // クエリを準備する
    if sqlite3_prepare(db, query, -1, &stmt, nil) != SQLITE_OK{
        let errmsg = String(cString: sqlite3_errmsg(db)!)
        print("error preparing insert: \(errmsg)")
    }
        
    var list:[[String]] = []
    // クエリを実行し、取得したレコードをループする
    while(sqlite3_step(stmt) == SQLITE_ROW){
        var list_:[String] = []
        let name = String(cString: sqlite3_column_text(stmt, 0))
        let state = String(cString: sqlite3_column_text(stmt, 1))
            
        //リストに格納(テーブルの数だけ)
        list_.append(contentsOf: [name,state])
        list.append(list_)
    }
    return list
}

これで列数を取得すればデータ数が取得できるのでメソッドの削減ができます。

Selectの引数文字列は下記を入れればOKです。

SELECT * FROM [テーブルネーム]

では今回の記事は以上です。他にも多数の記事を記載しているのでそちらも是非参考にしてみてください。

Swift
スポンサーリンク
tomoをフォローする
スポンサーリンク
SunnyDayTravel-Blog

コメント

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