i am using FMDatabase in my IOS App to access SQLITE database.
i have created a class called ModelManager and all is working fine. i am able to select, update, ...
but i am not sure if what i am doing is right so please help me understand this.
in Model Manager class:
let sharedInstance = ModelManager()
class ModelManager: NSObject {
    var database: FMDatabase? = nil
    class func getInstance() -> ModelManager
    {
        if(sharedInstance.database == nil)
        {
            sharedInstance.database = FMDatabase(path: Util.getPath(GlobalVariables.DatabaseName))
            sharedInstance.database?.logsErrors()
            sharedInstance.database?.crashOnErrors()
        }
        return sharedInstance
    }
    func ExecQuery(Query: String, MethodCalling: String) -> Bool
    {
        sharedInstance.database!.open()
        let isExecuted = sharedInstance.database!.executeUpdate(Query, withArgumentsInArray: nil)
        //let isExecuted = ModelManager.getInstance().database?.executeUpdate(Query, withArgumentsInArray: nil)
        sharedInstance.database!.close()
        if(isExecuted == false)
        {
            //error
        }
        return isExecuted
    }
}
when i want to access the database i do the following:
for selecting:
sharedInstance.database!.open()
        let resultSet: FMResultSet! = ModelManager.getInstance().database?.executeQuery(Query, withArgumentsInArray: nil)
        if (resultSet != nil)
        {
            while resultSet.next()
            {
                print("here: \(lastLoggedInUser)")
                lastLoggedInUser = resultSet.stringForColumn("FTLOGIN")
            }
        }
        sharedInstance.database!.close()
for executing queries (update, insert, delete...)
 ModelManager.getInstance().ExecQuery(Query, MethodCalling: "LoginService")
Now my question is
if i had to perform a selection query and while fetching data, i want to execute a query, how can i do that?
sharedInstance.database!.open()
            let resultSet: FMResultSet! = ModelManager.getInstance().database?.executeQuery(Query, withArgumentsInArray: nil)
            if (resultSet != nil)
            {
                while resultSet.next()
                {
                         ModelManager.getInstance().ExecQuery(SomethingRetreived, MethodCalling: "LoginService")
                }
            }
            sharedInstance.database!.close()
Aucun commentaire:
Enregistrer un commentaire