ios学習ノートのFMDBの基本使用
5421 ワード
はじめに
FMDBフレームワークの使い方を学ぶには、公式ドキュメントを読んでgithubで「FMDB」を検索し、このフレームワークを見つけ、CocoaPodsでインストールしたり、Downloadしたりして、説明に従ってfmdbフォルダを直接プロジェクトにドラッグすると、libsqlite 3.0.tbdを導入したり、swift版でブリッジヘッダファイルを作成したりして、#import"FMDB.h"を入力する必要があります.
二例
1通常版
デスクトップにフォルダdbを作成し、プロジェクトにクラスSQLiteToolを作成します.
コントローラ呼び出しの結果を表示するには、次の手順に従います.
2スレッドセキュリティ
コントローラで呼び出す
FMDBフレームワークの使い方を学ぶには、公式ドキュメントを読んでgithubで「FMDB」を検索し、このフレームワークを見つけ、CocoaPodsでインストールしたり、Downloadしたりして、説明に従ってfmdbフォルダを直接プロジェクトにドラッグすると、libsqlite 3.0.tbdを導入したり、swift版でブリッジヘッダファイルを作成したりして、#import"FMDB.h"を入力する必要があります.
二例
1通常版
デスクトップにフォルダdbを作成し、プロジェクトにクラスSQLiteToolを作成します.
import Foundation
class SQLiteTool : NSObject{
// ,
static let shareInstance = SQLiteTool()
var db:FMDatabase?
override init() {
super.init()
//
db = FMDatabase(path:"Users/huwenkuan/Desktop/db/demo.sqlite")
if (db?.open())! {
print(" ")
createTable() //
}else{
print(" ")
}
}
// t_stu
func createTable() -> () {
let sql = "create table if not exists t_stu(id integer primary key autoincrement,name text not null,age integer,score real default 60) "
let result = db?.executeUpdate(sql, withArgumentsIn: nil)
if result! {
print("yes")
}else{
print("no")
}
}
//
func insertRecord() -> () {
let sql = "insert into t_stu(name,age,score) values('zhangsan',19,99.0)"
let result = db?.executeUpdate(sql, withArgumentsIn: nil)
if result!{
print(" ")
}else{
print(" ")
}
}
//
func queryAll() -> () {
let sql = "select * from t_stu"
//
guard let resultSet = db?.executeQuery(sql, withArgumentsIn: nil)
else{
return
}
//
while resultSet.next() {
let name = resultSet.string(forColumn: "name")
let id = resultSet.int(forColumn: "id")
let age = resultSet.int(forColumn: "age")
let score = resultSet.double(forColumn: "score")
print(name,id,age,score)
}
}
//
func executeStaments() -> () {
let sql = "insert into t_stu(name,age,score) values('zhangsanfeng',21,83.0);insert into t_stu(name,age,score) values('wangermazi',22,68.0);insert into t_stu(name,age,score) values('lala',23,85.0);insert into t_stu(name,age,score) values('lili',25,38.0)"
let result = db?.executeStatements(sql)
if result! {
print(" ")
}else{
print(" ")
}
}
}
コントローラ呼び出しの結果を表示するには、次の手順に従います.
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
SQLiteTool.shareInstance.insertRecord()
、、、
}
}
2スレッドセキュリティ
class SQLiteTool : NSObject{
static let shareInstance = SQLiteTool()
// , , open
var dbQueue:FMDatabaseQueue = FMDatabaseQueue(path:"Users/huwenkuan/Desktop/db/demo.sqlite")
//
func createTable() -> () {
let sql = "create table if not exists t_stu(id integer primary key autoincrement,name text not null,age integer,score real default 60) "
// inDatabase ,
dbQueue.inDatabase { (db:FMDatabase?) in
// ,
let result = db?.executeUpdate(sql, withArgumentsIn: nil)
//
if result! {
print("yes")
}else{
print("no")
}
}
}
//
func executeStaments() -> () {
let sql = "insert into t_stu(name,age,score) values('zhangsanfeng',21,83.0);insert into t_stu(name,age,score) values('wangermazi',22,68.0);insert into t_stu(name,age,score) values('lala',23,85.0);insert into t_stu(name,age,score) values('lili',25,38.0)"
//
dbQueue.inDatabase { (db:FMDatabase?) in
let result = db?.executeStatements(sql)
//
if result! {
print(" ")
}else{
print(" ")
}
}
}
//
func transaction() -> () {
let sql0 = "insert into t_stu(name,age,score) values('haha',8,20.0)"
let sql1 = "insert into t_stu(name,age,score) values('da',9,21.0)"
dbQueue.inTransaction { (db:FMDatabase?, rollback) in
let result0 = db?.executeUpdate(sql0, withArgumentsIn: nil)
let result1 = db?.executeUpdate(sql1, withArgumentsIn: nil)
if result0! && result1! {
print(" ")
}else{
// rollback?.memory = true
}
}
}
}
コントローラで呼び出す
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
SQLiteTool.shareInstance.transaction()
}
}