SqlConnection baglantisi kopunca yeniden baglanma

C# (C Sharp) veya Java ile ilgili konuları buraya yazabilirsiniz.
Cevapla
Ertugrul
Üye
Mesajlar: 136
Kayıt: 09 May 2009 12:05

SqlConnection baglantisi kopunca yeniden baglanma

Mesaj gönderen Ertugrul »

Selamlar,
Kendi isimi goren ufak bir data access layer class'i yaptim. Icerisinde Exec(SQL,params),GetTable(SQL,params) vb static fonksiyonlar ve Conn nesnesi bulunuyor. Conn'a ulasmak icin asagidaki fonksiyonu kullaniyorum;

Kod: Tümünü seç

  public static SqlConnection Conn()
    {
        if (ConnStr == "")
            Defaults();
        try
        {

            if (conn == null)
                conn = new SqlConnection(ConnStr);
            if (conn.State != ConnectionState.Open)
            {
                conn.Open();
                Execute("SET DATEFORMAT DMY",null);
            }
            return conn;
        }
        catch
        {
            System.Windows.Forms.MessageBox.Show("Unable to connect to DB");
        }
        return null;
    }
Sorun baglanti koptugunda if (conn.State != ConnectionState.Open) satiri calismiyor, conn.State=ConnectionState.Open diye dusunerek gecip SqlException hatasi veriyor. Baglantinin kopup kopmadigini anlamak icin System.Net.NetworkInformation.NetworkInterface.GetIsNetworkAvailable() da kullanamiyorum cunku Compact Framework desteklemiyor. Ne yapabilirim?
unalaygun
Üye
Mesajlar: 139
Kayıt: 27 Mar 2004 12:34
Konum: istanbul

Re: SqlConnection baglantisi kopunca yeniden baglanma

Mesaj gönderen unalaygun »

sizin işiniz bittiğinde connectionlar genelde kapatılır.
Ama siz connectionını kapatılmasını istemiyorsunuz galiba ama bildiğim kadarıyla mysql de benim başıma şöyle bir iş gelmişti.
Server ayarlarında connectionlar şukadar dakika sonra kapat gibi bir ayar vardı.
Yani ne yaparsam yapayım örneğğin 5 dakika sonra connection veritabnı tarafından sonlandırılıyordu.
Böyle olunca da tabi bende sıkıntı oluyordu çünkü kill oluyorlardı.
Ve bende hata alıyordum. bunun için 4 dakika 59 sn sonra connectionını kapatıp yeniden açıyordum.

şimdi yukarda söylediğim durumu şunun için söylüyorum devamlı bağlı kalmak size avantaj değil hatta bazen dezavantaj olaiblir. Ama devamlı kalmak gerekiyorsa catch düşdüğünde tekrar connectionı çağırabilirsiniz. Connection kuralana kadar devamlı cathe düşer.
derviş
Ertugrul
Üye
Mesajlar: 136
Kayıt: 09 May 2009 12:05

Re: SqlConnection baglantisi kopunca yeniden baglanma

Mesaj gönderen Ertugrul »

Amacım internet bağlantısı kopunca sqlconnection ı kapatıp tekrar açmak. Compact framework'un kötü tarafı veritabanı hatası olunca sadece SqlException veriyor, detaylı hiçbir bilgi yok. Dediğiniz gibi try-catch içine alınca connection.close / open dersem bu sefer sorguda hata olunca anlayamayacağım yine bağlantı kopmuş gibi sayıp baştan başlayacak.
Kullanıcı avatarı
lazio
Moderator
Mesajlar: 1526
Kayıt: 11 Tem 2003 04:55
Konum: İstanbul

Re: SqlConnection baglantisi kopunca yeniden baglanma

Mesaj gönderen lazio »

conn nesnesini static yaparak dene
Resim

..::|YeşilMavi|::..
unalaygun
Üye
Mesajlar: 139
Kayıt: 27 Mar 2004 12:34
Konum: istanbul

Re: SqlConnection baglantisi kopunca yeniden baglanma

Mesaj gönderen unalaygun »

Exception turleri var catch içinde case ile hangi tur bir exception olduğunu yakalayabilirsin.
Bu şekildede olabilir.

Birde hocam tam anlamadım internet kopunca demişssin tam olrak durumu anlatsan yani uygulaman nerde veritabanı nerde.
İnternetle veritabanı arasındaki ilişki ne neden kopunca tekrar bağlanmak istiyorsun.
Bekli daha sağlıklı ve güzel çözümler üretilebilir.
derviş
Ertugrul
Üye
Mesajlar: 136
Kayıt: 09 May 2009 12:05

Re: SqlConnection baglantisi kopunca yeniden baglanma

Mesaj gönderen Ertugrul »

lazio yazdı:conn nesnesini static yaparak dene
Conn nesnesi static.
unalaygun yazdı:Exception turleri var catch içinde case ile hangi tur bir exception olduğunu yakalayabilirsin.
Bu şekildede olabilir.

Birde hocam tam anlamadım internet kopunca demişssin tam olrak durumu anlatsan yani uygulaman nerde veritabanı nerde.
İnternetle veritabanı arasındaki ilişki ne neden kopunca tekrar bağlanmak istiyorsun.
Bekli daha sağlıklı ve güzel çözümler üretilebilir.
Bahsettiğim gibi compact frameworkte bütün veirtabanı hataları SqlException diye hiçbir detay olmadan geçiyor. Program PDA da çalıştığı için bazen kasti olmayarak kablosuz ağ dışına çıkıyor, sorun bundan kaynaklanıyor.
unalaygun
Üye
Mesajlar: 139
Kayıt: 27 Mar 2004 12:34
Konum: istanbul

Re: SqlConnection baglantisi kopunca yeniden baglanma

Mesaj gönderen unalaygun »

Peki kardeş o zaman sen bir methot yazsan ve bu methodu bağlant kurmadan önce çalıştırsan.
Ve bu methodun görevi veritabanını olduğu makineye ping atsa ping işlemi başarılıysa connection açsa böylece ping atmadığında sen servera bağlanamadı gibi bir mesaj verebilirsin ve böylece connectiondan önce sorunu halletmiş olursun.

Windows ce ile alakalı hiç çalışmama olmadı ama bu olabilir gibi geliyor sanki.
derviş
Ertugrul
Üye
Mesajlar: 136
Kayıt: 09 May 2009 12:05

Re: SqlConnection baglantisi kopunca yeniden baglanma

Mesaj gönderen Ertugrul »

Her query icin ayri bir sqlconnection olusturarak sorunu cozdum.
Cevapla