美文网首页
swift—FMDB表中添加字段

swift—FMDB表中添加字段

作者: 溜溜leesin | 来源:发表于2018-05-29 11:50 被阅读139次

    随着app发展以及业务需求的变动,可能会涉及到表中字段的增加。因为FMDB是基于SQL封装的,所以我们可以看到在SQL官网,增加字段的语法是这样的

    1F689F2F413C343E825E3A7F66F6B45D.png B4033751D5209DDC31315C189B7D3AFA.png

    那么我们就可以根据以上说明在自己的项目中实践一下。

    上代码:(增加字段方法)

        func ChangeTable()  {
            if fmdb!.open() {
                if !fmdb!.columnExists("cleanFeedbacks", inTableWithName: "AfeFlightSummaryDataInfo"){
                    let sql  = "ALTER TABLE AfeFlightSummaryDataInfo ADD cleanFeedbacks BLOB"
                    do{
                        try fmdb!.executeUpdate(sql, values: nil)
                    }catch{
                        print(fmdb!.lastErrorMessage())
                    }
                }
            }
        }
    

    之后在我们的创建表的方法中调用一下就ok了

    //建表

    func creatTable()->Void{
    let creatSql = "create table if not exists AfeFlightSummaryDataInfo(id integer primary key autoincrement,workcode varchar(256),preparationId INT,case1 varchar(256),case2 varchar(256),case3 varchar(256),case4 varchar(256),case5 varchar(256),case6 varchar(256),innerFeedbacks BLOB,innerFeedbackString varchar(256),scFeedbacks BLOB,scFeedbackString varchar(256),zbFeedbacks BLOB,zbFeedbackString varchar(256),jwFeedbacks BLOB,jwFeedbackString varchar(256),cleanFeedBack varchar(256))"
    let result = fmdb!.executeUpdate(creatSql, withArgumentsIn: [])
    self.ChangeTable()
    if result{
    print("创建表成功")
    }
    }
    

    另:在OC或者swift中 一次增加多个字段我没有找到相关的资料 所以如果有相关的业务需求只能顺序执行一下啦 如果您有更好的解决方案 请告知

    代码如下:

    //增加字段

    func changeTable(){
    if fmdb!.open(){
    if !fmdb!.columnExists("etd", inTableWithName: "FlightPlanDataInfo"){
    let sql  = "ALTER TABLE FlightPlanDataInfo ADD etd varchar(256)"
    do{
    try fmdb!.executeUpdate(sql, values: nil)
    }catch{
    print(fmdb!.lastErrorMessage())
    }
    }
    if !fmdb!.columnExists("eta", inTableWithName: "FlightPlanDataInfo"){
    let sql  = "ALTER TABLE FlightPlanDataInfo ADD  eta varchar(256) "
    do{
    try fmdb!.executeUpdate(sql, values: nil)
    }catch{
    print(fmdb!.lastErrorMessage())
    }
    }
    if !fmdb!.columnExists("delayStatus", inTableWithName: "FlightPlanDataInfo"){
    let sql  = "ALTER TABLE FlightPlanDataInfo ADD  delayStatus varchar(256) "
    do{
    try fmdb!.executeUpdate(sql, values: nil)
    }catch{
    print(fmdb!.lastErrorMessage())
    }
    }
    if !fmdb!.columnExists("delayReason", inTableWithName: "FlightPlanDataInfo"){
    let sql  = "ALTER TABLE FlightPlanDataInfo ADD  delayReason varchar(256)"
    do{
    try fmdb!.executeUpdate(sql, values: nil)
    }catch{
    print(fmdb!.lastErrorMessage())
    }
    }
    }
    }
    

    关于可不可以在已经存在的表中一次性添加多个字段的问题,已经找到答案:

    在SQL官网有这么一句话:

    SQLite supports a limited subset of ALTER TABLE. The ALTER TABLE command in SQLite allows the user to rename a table or to add a new column to an existing table.
    翻译如下:
    SQLite支持ALTER TABLE的有限子集。SQLite中的ALTER TABLE命令允许用户重命名表或将一个新列添加到现有表中。

    所以fmdb并不支持一次性将多个字段添加至已存在的表中,只能够顺序执行啦(捂脸)

    相关文章

      网友评论

          本文标题:swift—FMDB表中添加字段

          本文链接:https://www.haomeiwen.com/subject/xwwojftx.html