XCode新建工程,下载第三方FMDB导入工程
https://github.com/ccgus/fmdb
编译成功后开始创建数据库
第一步:创建数据库
var path : String?
path = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true).first //数据库存储路径
path = path! + "/fmdbDemo.sqlite" //数据库名称
fmdb = FMDatabase.init(path: path)
第二步:建表
if fmdb.open() {
let sql = "create table t_ball(id integer primary key autoincrement,name text not null,age integer ,score real default 59.0)"
let result = fmdb.executeUpdate(sql, withArgumentsIn: any)
if result {
print("创建表成功")
}
}else{
print("打开数据库失败")
}
至此,本地数据库创建完成,接下来是对数据库的相关操作
添加数据
let sql = "insert into t_ball (name,age,score,sex) values ('Batac',20,100,'boy')"
let result = fmdb.executeUpdate(sql, withArgumentsIn: any)
if result {
print("插入成功")
}
let sql = "update t_ball set name='Batac',age='22',score='95',sex='girl'"
let result = fmdb.executeUpdate(sql, withArgumentsIn: any)
if result {
print("修改成功")
}
let sql = "delete from t_ball where name = 'Batac'"
let result = fmdb.executeUpdate(sql, withArgumentsIn: any)
if result {
print("删除成功")
}
根据条件查询数据
let sql = "select * from t_ball where name = 'Batac'"
let result = fmdb.executeQuery(sql, withArgumentsIn: any)
while (result?.next())! {
let name = result?.object(forColumn: "name")
let age = result?.int(forColumn: "age")
let score = result?.int(forColumn: "score")
let sex = result?.object(forColumn: "sex")
print("name = \(String(describing: name)),age = \(String(describing: age)),score = \(String(describing: score)),sex = \(String(describing: sex))")
}
项目有时要在数据库添加数据,此时要用到数据迁移,以添加键值为例(以下为数据库添加sex属性)
if !fmdb.columnExists("sex", inTableWithName: "t_ball") {
let sql = "alter table t_ball add sex text"
let result = fmdb.executeUpdate(sql, withArgumentsIn: any)
if result {
print("更新数据库成功")
}
}