C# Mysql Kullanımı Hakkında.(Soru)
-
Merhaba gençler,
C# veritabanı programcılığı ile ilgili sormak istediğim bir kaç mevzu var.
Şimdi hangi kaynağa baksam sürekli baglanti.Open(); baglanti.Close(); yapıyorlar bu sağlıklı birşey mi? php gibi bir kere açmak mantıklı değil mi?
yada şöyle bişey yapılan her sorgu için bağlantıyı kapatıp açmak ne kadar mantıklı ?
Yapılan proje : Avm Yönetimi uygulaması
Kullanılan dil : C# + mysql
-
Ben using(..){..} deyimini kullanmıştım. Kod bloğu sonunda otomatik olarak kapanıyordu bağlantı.
Bu sayede kapattım mı açtım mı gibisinden aklımda soru işareti kalmıyordu.
Access kulanıyordum açık kalınca tekrar açmaya çalışınca hata veriyordu.
https://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlconnection(v=vs.110).aspx
-
Kendine özel Bir SQL class yapısı oluşturabilirsin. Herhngi bir soru gönderirken VT bağlantısını acıp kapatabilirsin. Entitiy Framework'e bakmalısın buda güzel bir yöntem Aç kapa uğraşmıyorsun + PDO Gibi birşey o da açıkları bir nebze olsun kapatıyor. vs vs.
-
anladım.
@pskpt using bir yöntem ama heryere kod yazmaktan ziyade class yapısı ile çalışıyorum.
mesela db diye bir class oluşturdum.
DB db = new DB();
yapınca constructor koduna veri tabanına bağlanma kodu yazdım.
bir kaç özellik tanımladım. db.baglantivarmi() fonksiyonu açık bağlantıyı sorguluyor veya db.TabloGoster("sql sorgusu"); geriye DataTable verisi döndürüyor gibi...
ama mesela ben login ekranında bağlantı açtım giriş yaptı. ana form geldi orda bir daha DB db =new DB(); 2. bir değişken mi? açıyor var olan bağlantıdan dolayı problem olurmu....
EDİT: Ufak bir kod düzenlemesi :D db.baglantiKapat(); form kapatılırken bu kodu çağırıp veritabanını komple kapatıp diğer forma geçebilirim :) Sorun Çözülmüştür.
-
Hocam ado.net sınıf kütürhanelerini kullanırken SqlConnection con = new SqlConnection(); falan derken her defasında bağlantıyı açıp kapat.Bu işlemin fazla bir maliyeti yok.Yani bağlantıyı 1 kere acıp sonra kapatmamak iyi bir teknik değil sanırım.
Connection Pooling denen bi olay var biraz onu araştır hocam. Entity Framework gbi bir araç kullanmadıgın için bu tarz şeylere dikkat etmen gerekiyor sanırım.
http://www.buraksenyurt.com/post/Connection-Pooling-in-Onemi-bsenyurt-com-dan.aspx makale eski biraz ama işime yarar bişeyler çıkabilir.
-
IDisposable uyarlayan her nesneyi using ile kullanmak iyi bir alışkanlık. O sınıfın içinde ne managed ne unmanaged bilmiyoruz çünkü.
Alıntı:
The garbage collector automatically releases the memory allocated to a managed object when that object is no longer used. However, it is not possible to predict when garbage collection will occur. Furthermore, the garbage collector has no knowledge of unmanaged resources such as window handles, or open files and streams.
Aksi halde nesneyi try/catch/finally bloğunda açıkça sonlandırmak gerekecek. Tüm sınıfı da try/catch/finally'e sokamayacağımıza göre using de geç.
-
Dispose ve close her zaman sonlandırmıyor Bilgin olsun. Enstitü framework kullan hiç dert etme
-
ontedi bunu yazdı
Dispose ve close her zaman sonlandırmıyor Bilgin olsun. Enstitü framework kullan hiç dert etme
Hocam framework hakkında link verebilir misin?
kontrol edeyim yolun başındayken sağlam bir temel atayım.
-
Entity yerine dapper bir alternatif olabilir deneyin.
-
http://www.tutorialspoint.com/entity_framework/ başlangıç için brdan bakabilirsin hocam
-
Hannibal_King bunu yazdı
Hocam ado.net sınıf kütürhanelerini kullanırken SqlConnection con = new SqlConnection(); falan derken her defasında bağlantıyı açıp kapat.Bu işlemin fazla bir maliyeti yok.Yani bağlantıyı 1 kere acıp sonra kapatmamak iyi bir teknik değil sanırım.
Connection Pooling denen bi olay var biraz onu araştır hocam. Entity Framework gbi bir araç kullanmadıgın için bu tarz şeylere dikkat etmen gerekiyor sanırım.
http://www.buraksenyurt.com/post/Connection-Pooling-in-Onemi-bsenyurt-com-dan.aspx makale eski biraz ama işime yarar bişeyler çıkabilir.
hocam tam istediğim şey aslında buymuş
using(değişken tanımlama)
{
//bunun öneminide daha iyi anladım.
}