Swift Sqlite数据库错误:FMDatabase未打开。
我收到这个错误,FMB数据库没有打开。即使在执行查询之前先打开数据库。这是我用来打开数据库的数据库实例的代码Swift Sqlite数据库错误:FMDatabase未打开。,swift,fmdb,Swift,Fmdb,我收到这个错误,FMB数据库没有打开。即使在执行查询之前先打开数据库。这是我用来打开数据库的数据库实例的代码 var instance = ModelManager() class ModelManager: NSObject { var database: FMDatabase? = nil var database2: FMDatabase? = nil var resultSet: FMResultSet! class func getInstance(sqllite:String)
var instance = ModelManager()
class ModelManager: NSObject {
var database: FMDatabase? = nil
var database2: FMDatabase? = nil
var resultSet: FMResultSet!
class func getInstance(sqllite:String) -> ModelManager {
if(instance.database == nil){
instance.database = FMDatabase(path: Util.getPath(sqllite))
}
return instance
}
class func getInstance2(sqllite:String) -> ModelManager {
if(instance.database2 == nil){
instance.database2 = FMDatabase(path: Util.getPath(sqllite))
}
return instance
}
}
这是我得到错误的代码
func saveImageAudio(audioFile:String?,imageFile:String?,isImage:Bool){
guard (instance.database?.open())! else {
return
}
let fileName = isImage == true ? imageFile : audioFile
var paramName = isImage == true ? "imageList" : "audioList"
let countParam = isImage == true ? "imageCount" : "audioCount"
let time = Util.DateTime()
guard increaseLastNo(isImage: isImage) else {
return
}
do {
let FileArray = getImageAudiolist(isImagelist: isImage)
var query = ""
var values:[Any] = []
if FileArray.count == 0 {
query = "update RoomSectionDetails set \(paramName) = ?, \(countParam) = 1 ,modified_dtm = ? where pda_guid = ? and roomName = ? and sectionID = ? and dead = ?"
values = [fileName!,time,pda_guid,roomName,sectionId,0]
}else{
query = "update RoomSectionDetails set \(paramName) = \(paramName) || ?, \(countParam) = \(countParam) + 1, modified_dtm = ? where pda_guid = ? and roomName = ? and sectionID = ? and dead = ?"
values = [",\(fileName!)",time,pda_guid,roomName,sectionId,0]
}
try instance.database?.executeUpdate(query, values: values)
paramName = isImage == true ? "lastImageNo" : "lastAudioNo"
if !isImage {
self.updateAudioDuration()
}
} catch {
print("Error while Saving Image Audio in DB")
}
instance.database?.close()
}
请给出这个问题的解决方案。在触发查询后,我从未关闭过数据库。这导致cpu使用量超过200。所以现在我要关闭数据库。但我得到了这个错误。谢谢你的帮助。我找到了这个问题的解决方案。我在关闭数据库的方法中有一个方法。因为那个错误即将发生。谢谢您的帮助。在调用saveImageAudio之前,您是否在代码中的某个地方调用了getInstance或getInstance2?我强烈建议将数据库和database2声明为惰性变量,而不是实现getInstance和getInstance2是的,Ahmad F。我在应用程序中调用了deletgate。但声明惰性并不能解决此错误的问题。我已经试过了。