今回の記事は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、テーブルがない場合は下記サイトにしたがって何かしらデータを入れてからの操作になります。
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 [テーブルネーム]
では今回の記事は以上です。他にも多数の記事を記載しているのでそちらも是非参考にしてみてください。
コメント