我安装了 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/