• 20-08-2012, 12:27:27
    #19
    faintermann adlı üyeden alıntı: mesajı görüntüle
    c# kodu:


    Üretilen CIL kodu:


    C# kodu:


    Üretilen CIL kodu:


    CIL kodlarından da anlaşılacağı gibi aslında try finally blok kullanımı ile using kullanımı arasında büyük farklar yoktur. sadece using direktifi kullanıldığında obje dispose edildiyse finally blogundan çıkılıyor. Bu da exception safety sağlayabilir. Tabiki her execute işlemine finally kullanmak amelasyon olacağı için (Her execute işleminin aynı method üzerinden yapılacağı bir methodu yazmadıysanız) using kullanmak mantıklı olacaktır.

    Probleminize gelirsek:
    Sorun server-side bir problem gibi duruyor. Kullandığınız Foreign Key'lerin çokluğu, veri bütünlüğünün bozulmuş olması, index tanımlaması yaptıysanız bu tanımın değişmiş olabileceği, tabloların relation durumlarının karışık olması, sunucunuz ile sql sunucunuz farklıysa aradaki bağlantı durumu vs vs gibi nedenlerden dolayı time-out alıyor olabilirsiniz. Bunların yanında SQL sunucunuzdan direk olarak sp execute yaparak çalışma zamanını kontrol ediniz. Sorun yok ise kodda optimizasyona gidebilirsiniz.
    Using kullanımı hakkında ki bilgi için teşekkürler.

    Program i5 işlemcili 16 gm ram olan bir server'da çalışıyor. Sql de aynı makinede kurulu zaten. 2 haftadır sorunsuz çalışan program kodlarda değişiklik yapmama rağmen bugünlerde bu hatayı vermeye başladı. Bir anlam veremedim gerçekten

    şuan bütün kodlarda using kullanıp tekrar denicem bakalım neler olacak..
  • 20-08-2012, 16:50:41
    #20
    ertan2002 adlı üyeden alıntı: mesajı görüntüle
    ExecuteNonQuery doğru kullanmışsın
    bi kaç tavsiyem olacak
    öncelikle dispose yapma bunun yerine

    using(SqlCommand cmdKaydet2 = new SqlCommand("sp_ekle",baglanti))
    {
    
    cmdKaydet2.CommandType = CommandType.StoredProcedure; 
    cmdKaydet2.Parameters.Add(new SqlParameter("Adi", dt.Rows[i]["Adi"])); 
    cmdKaydet2.Parameters.Add(new SqlParameter("Soyadi", dt.Rows[i]["Soyadi"])); 
    cmdKaydet2.Parameters.Add(new SqlParameter("Yasi", dt.Rows[i]["Yasi"])); 
    cmdKaydet2.Parameters.Add(new SqlParameter("Adres", dt.Rows[i]["Adres"])); 
    cmdKaydet2.Parameters.Add(new SqlParameter("Adres2", dt.Rows[i]["Adres2"])); 
    cmdKaydet2.Parameters.Add(new SqlParameter("Tel", dt.Rows[i]["Tel"])); 
    cmdKaydet2.Parameters.Add(new SqlParameter("Tel2", dt.Rows[i]["Tel2"])); 
    cmdKaydet2.ExecuteNonQuery(); 
    
    }
    bu şekilde dene..

    ayrıca entity framework kullanmanı tavsiye ederim
    Bu yöntemi kullandım şu şekilde bir hata verdi nerede hata yapıyorum :S



    Edit:

    Sorunu şu kullanım ile çözdüm

    using(SqlCommand cmdKaydet2 = new SqlCommand("exec sp_ekle @Adi,@Soyadi,@Yasi,@Adres,@Adres2,@Tel,@Tel2",baglanti))
    {
    
    cmdKaydet2.CommandType = CommandType.StoredProcedure; 
    cmdKaydet2.Parameters.AddWithValue("Adi", dt.Rows[i]["Adi"]); 
    cmdKaydet2.Parameters.AddWithValue("Soyadi", dt.Rows[i]["Soyadi"]); 
    cmdKaydet2.Parameters.AddWithValue("Yasi", dt.Rows[i]["Yasi"]); 
    cmdKaydet2.Parameters.AddWithValue("Adres", dt.Rows[i]["Adres"]); 
    cmdKaydet2.Parameters.AddWithValue("Adres2", dt.Rows[i]["Adres2"]); 
    cmdKaydet2.Parameters.AddWithValue("Tel", dt.Rows[i]["Tel"]); 
    cmdKaydet2.Parameters.AddWithValue("Tel2", dt.Rows[i]["Tel2"]); 
    cmdKaydet2.ExecuteNonQuery(); 
    
    }