使用FMDB Swift创建多个表

时间:2017-01-04 12:40:14

标签: ios swift sqlite

我安装了FMDB cocoapods来在我的应用程序(sqlite)中创建数据库,但我在数据库中创建多个表时陷入困境。我为此创建了一个扩展。

这是我的代码:

extension UIViewController {

    func createTable(table: String){

        let filemgr = NSFileManager.defaultManager()
        let dirPaths = filemgr.URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask)

        let databasePath = dirPaths[0].URLByAppendingPathComponent("contacts.db").path!

        if !filemgr.fileExistsAtPath(databasePath as String){

            let contactDB = FMDatabase(path: databasePath as String)

            if contactDB == nil {
                print("Error: \(contactDB?.lastErrorMessage())")
            }

            if (contactDB?.open())! {
               let sql_stmt = table
               if !(contactDB?.executeStatements(sql_stmt))! {
                    print("Error: \(contactDB?.lastErrorMessage())")
                }else {
                    print("table created")
                }
                contactDB?.close()
            } else {
                print("Error: \(contactDB?.lastErrorMessage())")
            }

        }

    }

}

致电分机:

// calling first time
createTable("CREATE TABLE IF NOT EXISTS CONTACTS (ID INTEGER PRIMARY KEY AUTOINCREMENT, NAME TEXT, ADDRESS TEXT, PHONE TEXT)")

// calling again
reateTable("CREATE TABLE IF NOT EXISTS DESIGNATION (ID INTEGER PRIMARY KEY AUTOINCREMENT, NAME TEXT, ADDRESS TEXT, DESIG TEXT)")

因此,当我调用扩展来创建表时,它只创建CONTACTS表,当我第二次调用时,它不会创建DESIGNATION表,依此类推。

我在这里做错了任何人请帮忙解决这个问题。感谢。

使用Swift2。

1 个答案:

答案 0 :(得分:2)

我通过创建单个查询语句而不是一次又一次地调用扩展来创建表来解决这个问题。

以下是查询:

let tables = "CREATE TABLE IF NOT EXISTS CONTACTS (ID INTEGER PRIMARY KEY AUTOINCREMENT, NAME TEXT, ADDRESS TEXT, PHONE TEXT);" +
             "CREATE TABLE IF NOT EXISTS DESIGNATION (ID INTEGER PRIMARY KEY AUTOINCREMENT, NAME TEXT, ADDRESS TEXT, DESIG TEXT);"

// calling extension
createTable(tables)

编写此ans以使其他用户有用。 谢谢大家:)