mardi 3 novembre 2015

FMDatabase IOS performing multiple queries while database open

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