swift中使用fmdb

原文链接:
http://www.techotopia.com/index.php/An_Example_SQLite_based_iOS_8_Application_using_Swift_and_FMDB

首先去github上下载fmdb,https://github.com/ccgus/fmdb.git,打开项目后将fmdb复制到你自己的项目下

Mou icon

在将fmdb复制到Swift项目中时,会提示创建bridging header,

Mou icon

然后在创建的bridging header中引入FMDB.h文件

1
#import "FMDB.h"

在viewController中创建界面

Mou icon

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
class ViewController: UIViewController {

@IBOutlet weak var name: UITextField!
@IBOutlet weak var address: UITextField!
@IBOutlet weak var phone: UITextField!
@IBOutlet weak var status: UILabel!

var databasePath = String()

override func viewDidLoad() {
super.viewDidLoad()

}

@IBAction func saveData(_ sender: AnyObject) {
}

@IBAction func findContact(_ sender: AnyObject) {
}
.
.
}

viewDidLoad()

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
override func viewDidLoad() {
super.viewDidLoad()

let filemgr = FileManager.default
let dirPaths = filemgr.urls(for: .documentDirectory, in: .userDomainMask)

databasePath = dirPaths[0].appendingPathComponent("contacts.db").path

if !filemgr.fileExists(atPath: databasePath as String) {

let contactDB = FMDatabase(path: databasePath as String)

if contactDB == nil {
print("Error: (contactDB?.lastErrorMessage())")
}

if (contactDB?.open())! {
let sql_stmt = "CREATE TABLE IF NOT EXISTS CONTACTS (ID INTEGER PRIMARY KEY AUTOINCREMENT, NAME TEXT, ADDRESS TEXT, PHONE TEXT)"
if !(contactDB?.executeStatements(sql_stmt))! {
print("Error: (contactDB?.lastErrorMessage())")
}
contactDB?.close()
} else {
print("Error: (contactDB?.lastErrorMessage())")
}
}
}

saveData()

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
@IBAction func saveData(_ sender: AnyObject) {
let contactDB = FMDatabase(path: databasePath as String)

if (contactDB?.open())! {

let insertSQL = "INSERT INTO CONTACTS (name, address, phone) VALUES ('(name.text!)', '(address.text!)', '(phone.text!)')"

let result = contactDB?.executeUpdate(insertSQL, withArgumentsIn: nil)

if !result! {
status.text = "Failed to add contact"
print("Error: (contactDB?.lastErrorMessage())")
} else {
status.text = "Contact Added"
name.text = ""
address.text = ""
phone.text = ""
}
} else {
print("Error: (contactDB?.lastErrorMessage())")
}
}

findContact()

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
@IBAction func findContact(_ sender: AnyObject) {
let contactDB = FMDatabase(path: databasePath as String)

if (contactDB?.open())! {
let querySQL = "SELECT address, phone FROM CONTACTS WHERE name = '(name.text!)'"

let results:FMResultSet? = contactDB?.executeQuery(querySQL,withArgumentsIn: nil)

if results?.next() == true {
address.text = results?.string(forColumn: "address")
phone.text = results?.string(forColumn: "phone")
status.text = "Record Found"
} else {
status.text = "Record not found"
address.text = ""
phone.text = ""
}
contactDB?.close()
} else {
print("Error: (contactDB?.lastErrorMessage())")
}
}