Konu
Csharp İle Türkçe Sql Kütüphanesi
04-07-2025, 20:24:40
#8
BigCoder
Hazırda mevcut olan System.Data ve System.Data.SqlClient kütüphanelerini projeye ekleyip yanlış/eksik kodlama ile bu işler olmuyor.
1.
Bağlantı Yönetimi Sorunu (Connection Leak Riski)
baglan adında sınıfa ait bir SqlConnection örneği tutuluyor, ama:
BaglantiAc() metodu bağlantıyı açıyor ama BaglantiKapat() manuel çağrılmadıkça kapatılmıyor.
Her VeriEkle, VeriGuncelle, TabloAra vb. metot using bloğuyla açılıp kapanmıyor; bu da
bağlantı sızıntısına
sebep olur.
Çözüm:
using bloğu ile geçici bağlantı oluşturulmalı veya bağlantı havuzu mantığı düzgün oturtulmalı.
2.
SQL Injection Riski
TabloGetir ve TabloSil, TabloEkle gibi metotlarda tablo adı doğrudan SQL'e gömülüyor:
string cmdText = "SELECT * FROM [" + tabloAdi + "]";
Eğer Regex ile kısıtlama yapılmamışsa bu durum ciddi bir
SQL Injection açığı
oluşturur.
TabloAra metodu kısmen güvenli (Regex kontrolü ve parametre kullanımı var), ama bu diğerleri için eksik.
3.
Exception Handling Kötü Kullanımı
Her catch bloğunda hata mesajı yalnızca SqlHataKontrol içine yazılıyor, fakat exception fırlatılmıyor veya loglanmıyor. Bu da hataların izlenmesini zorlaştırır.
4.
Aşırı Sorumluluk (SRP - Single Responsibility Violation)
TrSql sınıfı:
Bağlantıyı yönetiyor.
Veri işliyor (Insert/Update/Delete).
Tabloları oluşturuyor/siliyor.
Hata mesajı tutuyor.
Yani hem servis hem bağlantı yöneticisi hem hata takipçisi olmuş.
Çözüm:
Repository ve ConnectionManager gibi ayrı sorumluluklara bölünmeli.
5.
Durum Bağımlılığı (Statefulness)
Sınıf this._sqlDurum bayrağına çok bağlı. Bu, programı tahmin edilmesi zor hale getirir.
Örneğin bağlantı durumu açılıp kapatıldığında _sqlDurum senkronize kalmayabilir.