前言
最近项目中使用到 FMDatabaseQueue ,很久没有用过了,最近踩了不少坑,今天把它整理出来。个人觉得手机端处理这种数据库,还是麻烦的,调试起来非常麻烦,所以还是按照规范 一点一点写数据库代码,少走弯路。
第一步创建数据库
private var databaseQueue:FMDatabaseQueue = FMDatabaseQueue(path:pathName)!
此处可以创建一个单利 整个程序运行周期都用这一个FMDatabaseQueue
第二步创建数据库表
let sql = "create table if not exists TableName(id int,name text,age text);"
self.databaseQueue.inDatabase { (database) in
do{
try database.executeUpdate(sql, values:nil)
}catch{
print("表创建失败")
}
}
增
self.databaseQueue.inDatabase { (database) in
let sql = "insert into TableName (id,name,age) values(?,?,?)"
do{
try database.executeUpdate(sql, values: [0,"晨光",25])
}catch{
print("数据插入失败")
}
}
删
self.databaseQueue.inDatabase { (database) in
let sql = "delete from TableName where id=(?)"
let result = database.executeUpdate(sql, withArgumentsIn: [0])
if result{
print("删除成功")
}
}
改
self.databaseQueue.inDatabase { (database) in
let sql = "update TableName set name=(?) where id=(?)"
let result:Bool = database.executeUpdate(sql, withArgumentsIn: ["晨光new",0])
if !result{
print("更新失败")
}
}
查
条件查询
let sql = "select * from TableName where id=(?)"
databaseQueue.inDatabase { (database) in
do{
let result:FMResultSet = try database.executeQuery(sql, values: [0])
while result.next(){
if result.int(forColumn: "id") != nil{
let id = result.int(forColumn: "identifier")!
}
if result.string(forColumn: "name") != nil{
let name = result.int(forColumn: "name")!
}
}
}catch{
print("查询失败")
}
}
条件查询
self.databaseQueue.inDatabase { (database) in
let sql = "select * from TableName"
do{
let result:FMResultSet = try database.executeQuery(sql, values:nil)
while result.next(){
if result.int(forColumn: "id") != nil{
let id = result.int(forColumn: "identifier")!
}
if result.string(forColumn: "name") != nil{
let name = result.int(forColumn: "name")!
}
}
}catch{
print("查询失败")
}
}
总结
工作总常用的也就是 这些 增删改查 至于事务的 没用过 以后用到了再补上。