ios - 使用 FMDB Swift 创建多个表

标签 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。

最佳答案

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

这里是查询:

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 对其他用户有用。 谢谢大家:)

关于ios - 使用 FMDB Swift 创建多个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41464076/

相关文章:

ios - 有人得到了使用 Cocoapods 更新 'FacebookCore' pod 时出错的解决方法吗?

ios - 使用 UITextField 自定义自动 UIScrollView 滚动

ios - UITextView 中的 AttributedString 在顶部被修剪

c - SQLite语句 "PRAGMA database_list;"何时返回空结果集?

sqlite - 迁移待定。要解决此问题,请在本地运行 : bin/rake db:migrate RAILS_ENV=development, 工作

ios - 如何在 SnapKit 中按比例设置边缘偏移与 super View 高度的大小

使用 Open Graph 的 iOS Facebook 发布失败 - 错误代码 102

ios - 无法访问 uitableview 部分中未显示在屏幕上的单元格

ios - 如何在 ios swift 中使用远程 url 加载视频文件到 AVPlayer?

android - SQLite 和数据库初始化