none
Timeout boolean connectionbreak Hatası ?

    Soru

  • Merhaba

    Aşağıdaki kod çalışırken timeout booelan connectionbreak hatası alıyorum. Bu hatayı nasıl düzeltebilirim. Timeout 180 yaptım fakat hala bekletip aynı hatayı veriyor.

    Button Click

    insert cari....//Borç

    class.maxislemno(tablename, kolonname);

    insert cari....//Alacak kapama

    class.maxislemno(tablename,kolonname); // Burada hata veriyor. Ve aşağıdaki kodda hata veriyor.

      using (SqlConnection conkb = new SqlConnection(genel.kullanici.bag))
                     {
                         cmdkb = new SqlCommand("SELECT MAX ("+kolonname+") AS no FROM  "+hangitable, conkb);
    
                         conkb.Open();
                         SqlDataReader dtr;
                         dtr = cmdkb.ExecuteReader(CommandBehavior.CloseConnection);//Bu satırda hata veriyor.
                         string idd = "";
                         while (dtr.Read())
                         {
    
                             try
                             {
                                 idd = Convert.ToString(dtr["no"]);
                             }
                             catch
                             {
                                 idd = "0000000000";
                             }
                         }
                         dtr.Close(); conkb.Close();

    22 Haziran 2012 Cuma 17:01

Tüm Yanıtlar

  • Merhaba DeveloperCsharp2012;

    Genellikle O hatanın Sebebi oluşturduğun Query'nin işlenme süresinin çok fazla olmasından kaynaklanır..

    Yapabileceklerin ...

    1 - Sorgunu Direk Veritabanı üzerinde deneme şansın varsa onu dene..

    2 - Sorguda MAX kullanmışsın MAX fonksiyonu sadece TEK BİR Sonuç döndüreceği için READER yerine ExecuteScalar  kullansan senin için daha hoş olacaktır

    3 - Zaten SqlConnection Using İçinde Kullanmışsın Neden READER'a CommandBehavior ile Bağlantıyı kapat diyorsun =) (ki Sanırsam HATA burda şimdi Farkettim)

    birde bunu dene

                using (SqlConnection conkb = new SqlConnection(genel.kullanici.bag))
                {
                    SqlCommand cmdkb = new SqlCommand("SELECT MAX (" + kolonname + ") AS no FROM  " + hangitable, conkb);
                    conkb.Open();
                    int DonenDeger = (int)cmdkb.ExecuteScalar();
                }


    Jesus Promised The End Of All Wicked People, ODIN Promised The End Of All Ice Giants. I Don't See Many Ice Giants Around... exe[nokta]cute[at]live[nokta]com





    22 Haziran 2012 Cuma 17:25
  • executescalar ile çalıştı fakat aynı hatayı ikinci sorguda yine verdi.

    Direk management studio dan sql query üstüste istediğim kadar execute yapabiliyorum.


    22 Haziran 2012 Cuma 17:44
  • Tekrar Merhaba ;

    O zaman bende diyorum ki Proje Üzerinde Kapatmayı unuttuğun başka bir Connection falan olmasın..

    birde Tabi İkinci sorguya da bakmak lazım =) Hatta Mail adresim aşağıda Komple bakmamı istersen.


    Jesus Promised The End Of All Wicked People, ODIN Promised The End Of All Ice Giants. I Don't See Many Ice Giants Around... exe[nokta]cute[at]live[nokta]com

    22 Haziran 2012 Cuma 17:58
  • Aslında yapı aşağıdaki gibi. Gönderirdim ama çok karışık bir kod.

    transaction baslangıcı..

    insert cari

    class.maxislemno(cari)//Transactiona girmiyor.Farklı bir bağlantı ile sorguyu çekiyor.

    insert cari kapama

    class.maxislemno(cari)//Transactiona girmiyor. Farklı bir bağlantı ile sorgu.

    döngü

    insert kasa lar

    insert banka lar

    döngü

    insert stoklar

    Commit.transaction.

    Yani aynı anda açık bir connection var ve transaction kullandım o connection ile birlikte.

    22 Haziran 2012 Cuma 18:06
  • Yine Merhaba ;

    Bunu kullanmanı Tavsiye Etmiyeceğim Ama birde Connection Stringini Buna Göre

    Server=serverAdiBuraGele;Database=databaseAdiBuragele;Trusted_Connection=True; MultipleActiveResultSets=true;

    Oluşturup sadece denemek amaçlı görsek ?


    Jesus Promised The End Of All Wicked People, ODIN Promised The End Of All Ice Giants. I Don't See Many Ice Giants Around... exe[nokta]cute[at]live[nokta]com

    22 Haziran 2012 Cuma 18:11
  • multipleactiveresultsets i eski haline getirebilecekmiyiz ?
    22 Haziran 2012 Cuma 18:16
  • aslında görmek istediğim yada bahsetmek istediğim olay bu ;

    Birde transaction kullanıyorsun. Peki Transaction başladıkdan sonra Bağlantıyı açıyorsun, Sonra Bu Bağlantıyı Doğal olarak kapatmıyorsun değilmi ?

    Daha sonra aradaki MAX çekmeler vb için yine Aynı Connection stringden den instance alıp bağlanıyorsun ?

    Aç Kapa - aç kapa .. Transaction un başındaki açdığın bağlantı Commit işlemi yapamadan yalan olmasın bu arada =)

    MARS ın orda durmasının aslında bir sakıncası yok... YETERKİ Connectionlarını Her İşlmeden sonra KAPATMAYI unutma


    Jesus Promised The End Of All Wicked People, ODIN Promised The End Of All Ice Giants. I Don't See Many Ice Giants Around... exe[nokta]cute[at]live[nokta]com

    22 Haziran 2012 Cuma 18:18
  • Malasef olmadı. O açık olan sadece tek bir connecting. Onun dışında yok. zaten pool dolunca otamatik temizleyen kod kullanıyorum.
    22 Haziran 2012 Cuma 18:19
  • Merak Ettiğim ikinci sorguda hata alıyorum demişsin.. İkinci sorguda / işlemde de bir sıkıntı olmasın, kodu paylaşsan da göz atsak ? yada daha dikkatli kontrol etsen, nede olsa ilk sorguda sıkıntı yok artık.

    Jesus Promised The End Of All Wicked People, ODIN Promised The End Of All Ice Giants. I Don't See Many Ice Giants Around... exe[nokta]cute[at]live[nokta]com

    22 Haziran 2012 Cuma 18:30
  • ilk sorguda hiç problem olmadı. ikinci sorgu birinciyle aynı. aynı table da aynı kolon için MAX değerini alıyor.

    işlem no yu alıyor.

    birincisi cari hareketi borç için işlem no.

    ikincisi ise cari hareketi alacak için işlem no

    yani

    classname.islemnobul("x_carihareket" + genel.kullanici.firmaid, "x_hareketno")

    bu direk insert olan kayıtın islem nosunun value si oluyor.

    yani parameter.add("islemno", yukarıdaki kod); birinci ile ikinci arasında hiç bir fark yok. fark birincide borç ikincide alacak kayıtı için alacak yapıyor.

    22 Haziran 2012 Cuma 18:41
  • Sorgular Aynı diyorsunuz. Bir ihtimal..

                using (SqlConnection conkb = new SqlConnection(genel.kullanici.bag))
                {
                    SqlCommand cmdkb = new SqlCommand("SELECT MAX (" + kolonname + ") AS no FROM  " + hangitable, conkb);
                    conkb.Open();
                    int DonenDeger = (int)cmdkb.ExecuteScalar();
                }

    gibi yine basti bir yerde connection zaten Kapanacak iken açmaya-kapatmaya çalışmak gibi basit bir hatanız olmasın.

    Hatayı göremiyorum, Code u göremiyorum dolayısı ile nasıl yardımcı olacağımı da bilemiyorum... Tavsiyem Transactionun başına Bir BreakPoint koyarak .. F11 ile adım adım neler oluyor bitiyor, Output ekranı ile kontrol etmenizi tavsiye etmekden başka birşey diyemiyorum.

    İyi Çalışmalar.


    Jesus Promised The End Of All Wicked People, ODIN Promised The End Of All Ice Giants. I Don't See Many Ice Giants Around... exe[nokta]cute[at]live[nokta]com

    22 Haziran 2012 Cuma 19:01
  • Döngü içinde aynı kodu uygularsan bu hatayı veriyor.

    40 defa döngüye sokarak deneyebilirsiniz.

    22 Haziran 2012 Cuma 21:53
  • Döngü içinde aynı kodu uygularsan bu hatayı veriyor.

    40 defa döngüye sokarak deneyebilirsiniz.


    Ado.net dışında select max(kolonismi) from table ile kayıt çekmek için hangi yöntemler var ? Bildiklerinizi kodlayabilirmisiniz ? Birde o yöntemlerle deneyeyim.
    23 Haziran 2012 Cumartesi 12:51