BigCoder adlı üyeden alıntı: mesajı görüntüle
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.
Bence yaşına göre iyi ilerliyor adım adım o sorunları kapatır 11. sınıfa gidiyor