Swift --棒棒糖3--数据库增删改查操作(GRDB)

本文介绍了如何使用 Swift 中的 GRDB 框架进行数据库的基本操作,包括插入、删除、更新和查询记录,详细讲解了相关代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

//创建两个表
1.class axStudent: Record {
  
    var studentID: Int64 = 0
    var studentName: String = ""
    var studentAge: Double = 0
    var studentSex: Int = 0
    var studentAddress: String = ""
}

2.class axTeacher: Record {

    var teacherID: Int64 = 0
    var studentID: Int64 = 0
    var teacherName: String = ""
    var teacherAge: Double = 0
    var teacherSex: Int = 0
    var teacherAddress: String = ""
}

        //查询单个表中的单个字段
        let studentAge = DBQueue.inDatabase { db in
            try! Double.fetchOne(db, sql: "Select studentAge from axStudent where studentID = \("")")
        }
        let studentSex = DBQueue.inDatabase { db in
            try! Int.fetchOne(db, sql: "Select studentSex from axStudent where studentID = \("")")
        }
        let studentName = DBQueue.inDatabase { db in
            try! String.fetchOne(db, sql: "Select studentName from axStudent where studentID = \("")")
        }
        
        //查询数据库中某字段数据的总和
        let studentAgeSum = DBQueue.inDatabase { db in
            try! Int.fetchOne(db, sql: "SELECT sum(studentAge) FROM axStudent WHERE studentID = \("")")//表中某一studentID可能有多条
        }
        
        let teacherAgeSum = DBQueue.inDatabase { db in
            try! Int.fetchOne(db, sql: "SELECT sum(teacherAge) FROM axTeacher WHERE teacherID = \("")")//表中某一teacherID可能有多条
        }
                
        //查询一个表中的某一条数据
        let student = DBQueue.inDatabase({ db in
            try! axStudent.fetchOne(db, sql: "Select * from axStudent where studentID = \("")")
        })
        
        let teacher = DBQueue.inDatabase({ db in
            try! axTeacher.fetchOne(db, sql: "Select * from axTeacher where teacherID = \("")")
        })
        
        //查询一个表中符合条件的多条数据
        let students1 = DBQueue.inDatabase({ db in
            try! axStudent.fetchAll(db, sql: "Select * from axStudent where studentID = \("")") //如果studentID不唯一
        })
        
        let students2 = DBQueue.inDatabase({ db in
            try! axStudent.fetchAll(db, sql: "Select * from axStudent")
        })
        
        let teachers1 = DBQueue.inDatabase({ db in
            try! axTeacher.fetchAll(db, sql: "Select * from axTeacher where teacherAddress = \("")")//如果teacherAddress不唯一
        })
        
        let teachers2 = DBQueue.inDatabase({ db in
            try! axTeacher.fetchAll(db, sql: "Select * from axTeacher")
        })
        
        //升序降序
        let students = DBQueue.inDatabase { db in
            try! axStudent.fetchAll(db, sql: "SELECT * FROM axStudent where studentID = \("") order by studentAge DESC")
        }
        
        let teachers = DBQueue.inDatabase { db in
            try! axTeacher.fetchAll(db, sql: "SELECT * FROM axTeacher where teacherID = \("") order by teacherAge ASC")
        }
        
        //查询个数
        let count = DBQueue.inDatabase { db in
            try! Int.fetchOne(db, sql: "Select count(*) from axStudent where studentID = '\("")’")
        }
        
        //多表联查
        let IDs = DBQueue.inDatabase { db in
            try! String.fetchAll(db, sql: "SELECT axTeacher.studentID FROM axStudent,axTeacher WHERE axStudent.studentAge = 10 and axTeacher.teacherSex > 0 and axStudent.studentID = axTeacher.studentID and axStudent.studentName not like 'D-%' and axTeacher.teacherName not like 'L-%'")
        }







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值