首先需要在项目中引入 FMDB 的 Swift 版本库,可以通过 CocoaPods 进行引入,或手动下载库源代码并将其添加到项目中。
在使用 FMDB 进行数据库操作时,可以先定义一个继承自 FMDatabase 的数据库类,用于管理数据库连接和操作。
import Foundation
import FMDB
class MyDatabase: FMDatabase {
static let shared = MyDatabase()
override init() {
super.init(path: "path_to_database")
}
func setup() throws {
guard open() else {
throw DatabaseError.connectionFailed
}
let createTableSQL = """
CREATE TABLE IF NOT EXISTS person (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT,
age INTEGER
)
"""
try executeUpdate(createTableSQL, values: nil)
}
func insert(person: Person) throws {
let insertSQL = "INSERT INTO person (name, age) VALUES (?, ?)"
try executeUpdate(insertSQL, values: [person.name, person.age])
}
func getAllPersons() throws -> [Person] {
let selectSQL = "SELECT * FROM person"
let resultSet = try executeQuery(selectSQL, values: nil)
var persons = [Person]()
while resultSet.next() {
let person = Person(id: resultSet.longLongInt(forColumn: "id"),
name: resultSet.string(forColumn: "name") ?? "",
age: resultSet.long(forColumn: "age"))
persons.append(person)
}
return persons
}
func deletePerson(id: Int64) throws {
let deleteSQL = "DELETE FROM person WHERE id = ?"
try executeUpdate(deleteSQL, values: [id])
}
func updatePerson(person: Person) throws {
let updateSQL = "UPDATE person SET name = ?, age = ? WHERE id = ?"
try executeUpdate(updateSQL, values: [person.name, person.age, person.id])
}
}
在这个例子中,定义了一个 MyDatabase
类,它继承自 FMDatabase
,用于管理数据库连接和操作。它包含了几个方法,分别用于初始化数据库、创建表、插入数据、查询数据、删除数据和更新数据。
在这个例子中,定义了一个 Person
结构体,用于表示一个人的信息:
struct Person {
var id: Int64 = 0
var name: String = ""
var age: Int = 0
}
使用该数据库类进行数据库操作时,示例代码如下:
do {
try MyDatabase.shared.setup()
let person = Person(name: "Tom", age: 18)
try MyDatabase.shared.insert(person: person)
let persons = try MyDatabase.shared.getAllPersons()
print(persons)
if let firstPerson = persons.first {
try MyDatabase.shared.deletePerson(id: firstPerson.id)
var updatedPerson = firstPerson
updatedPerson.name = "Jerry"
updatedPerson.age = 20
try MyDatabase.shared.updatePerson(person: updatedPerson)
}
} catch {
print(error)
}
在这个例子中,首先调用 setup
方法进行数据库的初始化和表的创建。
通过创建一个 Person
实例并调用 insert
方法将该实例插入到数据库中,然后调用 getAllPersons
方法获取所有人员的信息,并输出到控制台。
接下来,删除第一个人的信息,并更新第二个人的信息,最后再次调用 getAllPersons
方法获取所有人员的信息,并输出到控制台。
需要注意的是,在进行数据库操作时,需要使用异常处理来捕获可能出现的错误。
do {
try MyDatabase.shared.setup()
let person = Person(name: "Tom", age: 18)
try MyDatabase.shared.insert(person: person)
let persons = try MyDatabase.shared.getAllPersons()
print(persons)
if let firstPerson = persons.first {
try MyDatabase.shared.deletePerson(id: firstPerson.id)
var updatedPerson = firstPerson
updatedPerson.name = "Jerry"
updatedPerson.age = 20
try MyDatabase.shared.updatePerson(person: updatedPerson)
}
} catch {
print(error)
}