Hoşgeldin. Soru sormak veya cevaplamak için hemen üye ol.

bir viewcontroller altında tek viewdidload() altında birden fazla sql server bağlantısı nasıl gelçekleşir?

0 oy
17 kez görüntülendi
30, Eylül, 30 ios development kategorisinde hbal09 tarafından soruldu

Merhabalar,
Normalde bir viewcontroller altında tek bir sgl server bağlantısı gerçekleştireceğim zaman problemsiz bağlanıp hem veri çekebiliyorum hem de insert,delete veya update işlemlerini yapabiliyorum. Ancak form yüklendiğinde birden fazla sgl sorgusu çalıştıracak isem burada problem yaşıyorum. Örneğin:

 import UIKit

class ZVC: UIViewController, SQLClientDelegate {
    func error(_ error: String!, code: Int32, severity: Int32) {
        print("\(error!) \(code) \(severity)")
    }

    var strPass:String = "",strUName:String = "",strDBName:String = "",strIP:String = ""
    var client1:SQLClient!
    var client2:SQLClient!
    var uSonuc1: [String] = []
    var uSonuc2: [String] = []


    override func viewDidLoad() {
        super.viewDidLoad()
        client1 = SQLClient.sharedInstance()!
        client2 = SQLClient.sharedInstance()!

        let defaults = UserDefaults.standard
        if let str1 = defaults.string(forKey: "DBIP") { strIP = str1 }
        if let str2 = defaults.string(forKey: "DBName") { strDBName = str2 }
        if let str3 = defaults.string(forKey: "DBUser") { strUName = str3 }
        if let str4 = defaults.string(forKey: "DBPass") { strPass = str4 }

        client1 = SQLClient.sharedInstance()!
        client1.delegate = self
        client1.connect(strIP,username: strUName,password: strPass,database: strDBName){ success in
            if success {
                self.client1.execute("select MUSTERI_ADI as SONUC1 from MUSTERI order by MUSTERI_ADI") {
                    results in
                    for table in results as! [[[String:AnyObject]]] {
                        for row in table {
                            for (columnName, value) in row {
                                print("\(columnName) = \(value)")
                                if(columnName == "SONUC1"){
                                    let newVal = value as? String ?? ""
                                    self.uSonuc1.append(newVal)
                                }}}}
                    self.client1.disconnect()
                }}
            else{}
        }

         client2 = SQLClient.sharedInstance()!
         client2.delegate = self
         client2.connect(strIP,username: strUName,password: strPass,database: strDBName){ success in
         if success {
         self.client2.execute("SELECT UserId AS SONUC2 FROM Usertbl") {
         results in
         for table in results as! [[[String:AnyObject]]] {
         for row in table {
         for (columnName, value) in row {
         print("\(columnName) = \(value)")
         if(columnName == "SONUC2"){
         let newVal = value as? String ?? ""
         self.uSonuc2.append(newVal)
         }}}}
         self.client2.disconnect()
         }}
         else{}
         }
    }
}

Build ettiğimde hata vermiyor, ancak programı simulator'de çalıştırdığımda ObjcSQLClient klasöründeki SQLClient.m dosyasının dbloginfree(login); satırının karşısında Thread 8: EXCBADACCESS (code=1, address=***********) hatası veriyor ve program kapanıyor.
Bu sorunu nasıl aşabilirim?

Bu soruya cevap vermek için lütfen giriş yapınız veya kayıt olunuz.

...