返回 导航

Swift

hangge.com

Swift - 第三方SQLite库FMDB使用详解2(常用数据库操作:增删改查等)

作者:hangge | 2019-04-04 08:10
    前文我封装了一个数据库工具类 SQLiteManager点击查看),下面我们使用这个工具类来对数据库进行操作。

四、常用数据库操作

1,新建表

(1)下面在程序启动后自动创建一个 User 表,里面包含三个字段。
import UIKit

class ViewController: UIViewController {
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        // 创建表
        createTable()
    }
    
    // 创建表
    func createTable() {
        // 编写SQL语句(id: 主键  name和age是字段名)
        let sql = "CREATE TABLE IF NOT EXISTS User( \n" +
            "id INTEGER PRIMARY KEY AUTOINCREMENT, \n" +
            "name TEXT, \n" +
            "age INTEGER \n" +
        "); \n"
        
        // 执行SQL语句(注意点: 在FMDB中除了查询意外, 都称之为更新)
        let db = SQLiteManager.shareManger().db
        if db.open() {
            if db.executeUpdate(sql, withArgumentsIn: []){
                print("创建表成功")
            }else{
                print("创建表失败")
            }
        }
        db.close()
    }
}

(2)程序运行后,打开数据库文件可以看到数据表已经创建成功了。

2,插入数据(新增数据)

(1)使用正常方式的插入一条数据
// 编写SQL语句
let sql = "INSERT INTO User (name, age) VALUES ('hangge', 100);"

// 执行SQL语句
let db = SQLiteManager.shareManger().db
if db.open() {
    if db.executeUpdate(sql, withArgumentsIn: []){
        print("插入成功")
    }else{
        print("插入失败")
    }
}
db.close()

(2)使用预编译方式插入一条数据
// 编写SQL语句
let sql = "INSERT INTO User (name, age) VALUES (?,?);"

// 执行SQL语句
let db = SQLiteManager.shareManger().db
if db.open() {
    if db.executeUpdate(sql, withArgumentsIn: ["hangge", 100]){
        print("插入成功")
    }else{
        print("插入失败")
    }
}
db.close()

3,更新数据(修改数据)

(1)使用正常方式的修改数据
// 编写SQL语句
let sql = "UPDATE User set name = 'hangge.com' WHERE id = 2;"

// 执行SQL语句
let db = SQLiteManager.shareManger().db
if db.open() {
    if db.executeUpdate(sql, withArgumentsIn: []){
        print("更新成功")
    }else{
        print("更新失败")
    }
}
db.close()

(2)使用预编译方式修改数据
// 编写SQL语句
let sql = "UPDATE User set name = ? WHERE id = ?;"

// 执行SQL语句
let db = SQLiteManager.shareManger().db
if db.open() {
    if db.executeUpdate(sql, withArgumentsIn: ["hangge.com", 1]){
        print("更新成功")
    }else{
        print("更新失败")
    }
}
db.close()

4,删除数据

(1)使用正常方式的删除数据
// 编写SQL语句
let sql = "DELETE FROM User WHERE id = 2;"

// 执行SQL语句
let db = SQLiteManager.shareManger().db
if db.open() {
    if db.executeUpdate(sql, withArgumentsIn: []){
        print("删除成功")
    }else{
        print("删除失败")
    }
}
db.close()

(2)使用预编译方式删除数据
// 编写SQL语句
let sql = "DELETE FROM User WHERE id = ?;"

// 执行SQL语句
let db = SQLiteManager.shareManger().db
if db.open() {
    if db.executeUpdate(sql, withArgumentsIn: [3]){
        print("删除成功")
    }else{
        print("删除失败")
    }
}
db.close()

5,查询数据

(1)使用正常方式的查询数据
// 编写SQL语句
let sql = "SELECT * FROM User WHERE id < 10"

// 执行SQL语句
let db = SQLiteManager.shareManger().db
if db.open() {
    if let res = db.executeQuery(sql, withArgumentsIn: []){
        // 遍历输出结果
        while res.next() {
            let id = res.int(forColumn: "id")
            let name = res.string(forColumn: "name")!
            let age = res.int(forColumn: "age")
            print(id, name, age)
        }
    }else{
        print("查询失败")
    }
}
db.close()

(2)使用预编译方式查询数据
// 编写SQL语句
let sql = "SELECT * FROM User WHERE id < ?"

// 执行SQL语句
let db = SQLiteManager.shareManger().db
if db.open() {
    if let res = db.executeQuery(sql, withArgumentsIn: [10]){
        // 遍历输出结果
        while res.next() {
            let id = res.int(forColumn: "id")
            let name = res.string(forColumn: "name")!
            let age = res.int(forColumn: "age")
            print(id, name, age)
        }
    }else{
        print("查询失败")
    }
}
db.close()

附:其它一些 SQLite 常用语句补充

1,删除表

drop table User

2,查询表结构(建表语句)

select sql from sqlite_master where name = 'User'

3,新增表字段

ALTER TABLE User ADD phone varchar(256);
评论

全部评论(0)

回到顶部