我安装了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)")
因此,当我调用 extension 来创建表时,它只创建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 以使其他用户有用。谢谢大家:)