C# WinForms'da Veriyi Saklama — Tim Corey ile Bir Windows Formunda Veri Akışını Anlamak (Ders 15)
[[academy-video-youtube({"vid": "gpCrmbZR9yE", "start_time": "0", "title": "C# Uygulama Baştan Sona Ders 15 - Turnuva Formu Yaratma Bölüm 1", "creator": "Tim Corey", "length": "34m 39s"})]]
Bir C# WinForms uygulamasında verileri depolamak ve yönetmek sadece ekranda kontroller yerleştirmekle alakalı değildir. Verilerin bir veritabanı veya dosyadan modellere nasıl aktarıldığı ve ardından bir Windows Form içinde bağlanıp, görüntülenip ve manipüle edildiği ile ilgilidir. "C# Baştan Sona" kursunun 15. Dersi'nde, Tim Corey, Create Tournament Form'unu oluşturarak bu süreci çok pratik bir şekilde geliştiricilere gösterir.
Bu makalede, Tim'in video dersinde açıkladığı gibi C# WinForms veri depolama kavramlarına daha derinlemesine bakıyoruz. Visual Studio'daki adımlarını izliyor, verileri nasıl geri aldığını, kontrollerle nasıl bağladığını, sorunları nasıl ayıkladığını ve sonuçları nasıl doğruladığını takip ediyoruz.
Turnuva Oluştur Formunu Tanıtma ve Rolü
0:00'da Tim Corey 15. Dersi tanıtır ve bu Windows Form'un uygulamada önemli bir dönüm noktası olduğunu açıklar. Bu form tamamlandığında uygulamanın çoğunlukla çalışır durumda olacağını belirtir. Bu form karmaşık gözükse de Tim, sistemin gereksinim duyulan özelliklerin çoğunu halihazırda desteklediğini geliştiricilere güvence verir.
Bu noktada, önceki çalışmaların—modeller, veri bağlantıları, tablolar ve desenler—zaten sağlam bir temel oluşturduğunu vurgular. Artık amaç, verileri forma bağlayıp sistemi izole kontroller olarak değil, bir bütün olarak çalıştırmaktır.
Formu İncelemek ve Erken Sorunları Düzeltmek
1:10'da Tim, bir Windows Form'a başladığında, ilk önce formun ne yaptığını incelediğini ve bunu mantıksal parçalara ayırdığını açıklar. Tasarımcında küçük bir sorunu hemen fark eder: iki liste kutusu, kopyala-yapıştır hatası nedeniyle aynı etikete sahiptir.
İlerlemeden önce etiket metnini düzeltir ve küçük UI sorunlarının erken çözülmesi gerektiğini belirtir. Bu adım, temiz tasarımın ve netliğin, verilerin kullanıcılara gösterildiğinde kod kadar önemli olduğunu pekiştirir.
Veri Parçalarını ve Akışını Planlama
2:07'de Tim, bu formu bir video kaydetmiyorsa nasıl yaklaşacağını özetler. Şunları açıklar ki:
Select Team açılır menüsünü doldur
Seçilen takımlar liste kutusunu doldur
Add Team eylemini bağla
Ödülleri ele al
- Create ve delete eylemlerini daha sonra hallet
Bu bir video dersi olduğu için Tim, birkaç parçayı bir araya getirir. Bu planlama adımı kritiktir çünkü verilerin koleksiyonlar, kontroller ve olaylar arasında nasıl akacağını tanımlar, WinForms uygulaması içinde.
Takım Verilerini Depolamak için Koleksiyon Oluşturma
3:45'te Tim, F7 kullanarak kod görünümüne geçer, Çözüm Gezgini aracılığıyla formun kodunun arka plan dosyasına gider. Select Team açılır menüsünün TeamModel nesnelerinden oluşan bir koleksiyona ihtiyaç duyduğunu açıklar.
availableTeams adlı bir List<TeamModel> oluşturur. Bu liste, veri kaynağından alınan verilerin bellek içi depolaması olarak görev yapar. Tim, şimdilik yeni bir liste olarak başlatıldığını ancak bunun konfigürasyona göre ya bir veritabanından ya da bir metin dosyasından daha sonra doldurulacağını belirtir.
Bu, Tim'in WinForms'un verileri kontrollerde değil, koleksiyonlarda depolandığını gösterdiği an.
Veri Alma Sözleşmesini Belirleme
5:01'de Tim, GetTeamAll adlı bir yöntem oluşturur. Bu yöntemin, proje sırasında daha önce kullanılan GetPersonAll gibi desenlerle eşleştiğini açıklar. Bunu IDataConnection arayüzüne ekler ve bunun verilerin nasıl elde edileceğini tanımlayan bir sözleşme olduğunu belirtir.
Daha sonra bu yöntemi hem SQL hem de metin bağlayıcılarında uygular. Burada tutarlılığın önemini vurgular, belirlenmiş desenleri takip etmenin sistemi daha kolay bakım ve anlaşılır hale getirdiğini açıklar.
Saklı Yordamlarda ve Tablolarda Çalışmak
6:32'de Tim, SQL Server'a gider ve saklı yordamları tartışır. Mevcut prosedürleri gözden geçirir ve bu durum için uygun olmadıklarını açıklar. Turnuva henüz mevcut olmadığından, spTeam_GetAll adlı yeni bir saklı yordam oluşturur.
Bu prosedür:
Parametre almaz
Basit bir select ifadesi çalıştırır
- Teams tablosundaki tüm takım kayıtlarını alır
Tim prosedürü çalıştırır ve geri döndürülen verileri doğrular. Bu adım verilerin forma bağlanmadan önce çalıştığını sağlamak içindir.
Döngüler Kullanarak İlgili Verileri Doldurma
8:45'te Tim, sadece takımları almanın yeterli olmadığını açıklar. Her takım ayrıca ayrı bir tabloda saklanan bir üye listesini de içerir. TeamModel'in manuel olarak doldurulması gereken bir TeamMembers koleksiyonu içerdiğini gösterir.
Bunu yapmak için, Tim her takımı bir foreach döngüsü kullanarak dolaşır. Her takım örneği için, takım ID'sine göre kişileri geri getiren başka bir saklı yordam çağırır. Bu süreç, ilgili verilerle tamamen doldurulmuş bir model oluşturur.
Tim, bu adımın uygulanmasıyla, uygulamanın eksik kayıtlar değil, tam veri nesnelerine sahip olmasını sağladığını belirtir.
Saklanan Verileri Windows Form'a Bağlama
12:25'te Tim, Create Tournament Form'a geri döner ve geçici listeyi şu satırı kullanarak gerçek bir veri çağrısıyla değiştirir:
GlobalConfig.Connection.GetTeamAll()Bu satır, yapılandırılan bağlantı dizesini kullanarak verileri alır ve belleğe kaydeder.
Daha sonra bir InitializeLists yöntemi oluşturur ve bu, verileri kullanıcı arayüzü kontrollerine bağlayarak şu şekilde ayarlar:
Veri Kaynağı
- Görüntüleme Üyesi
Kullanıcıya nesne referansları yerine anlamlı metin gösterildiğini garantilemek için, görüntüleme özelliği olarak TeamName seçer.
Hataları Ayıklamak ve Verileri Doğrulamak
15:17'de Tim uygulamayı çalıştırır ve eksik bir parametreyle ilgili bir hatayla karşılaşır. Mesajı sakin bir şekilde okur, hata ayıklamanın geliştirmenin normal bir parçası olduğunu açıklar.
Gereken parametreyi geçirerek ve komut tipini saklı yordam olarak ayarlayarak sorunu çözer. Açılır menü hala boş gibi görünüyorken, Tim daha fazla araştırır.
22:35'te InitializeLists yönteminin hiç çağrılmadığını farkeder. Konstrüktöre ekledikten sonra veriler doğru şekilde görüntülenir. Bu anı, sistemde kısımların bir araya nasıl geldiğini gözden geçirmenin önemini vurgulamak için kullanır.
Bellekte Seçilen Takımları Yönetme
23:54'te Tim bir başka liste oluşturur ve buna selectedTeams adını verir. Bu koleksiyon, turnuva için seçilen takımların depolandığı yerdir. Bu desenin, projedeki önceki formlarla aynı olduğunu, tekrar kullanım ve tutarlılığı güçlendirdiğini açıklar.
Bu listeyi aynı gösterim üyesini kullanarak başka bir liste kutusuna bağlar, seçilen öğeleri göstermek kolay hale gelir.
Düğme Olaylarını Bağlama ve Verileri Hareket Ettirme
28:07'de Tim, tasarımcıdaki Add Team düğmesine çift tıklayarak tıklama olayını oluşturur. Seçilen öğeyi açılır menüden alır, bunu bir TeamModel'e geri dönüştürür ve null olmadığını doğrular.
Daha sonra takımı availableTeams'den kaldırır, selectedTeams'e ekler ve her iki listeyi yeniden bağlar. Veri kaynağını sıfırlamanın, UI'nin değişiklikleri hemen yansıtmasını sağladığını açıklar.
Bu Ders için Veri Depolamayı Tamamlama
32:13'te Tim, gerçekleştirilenleri özetler:
Veritabanından veri alındı
Koleksiyonlarda depolandı
WinForms kontrollerine bağlandı
Listeler arasında taşındı
- Ayıklandı ve doğrulandı
Kalan işin bu temelin üzerine inşa edileceğini belirtir.
Tim Corey'den Son Düşünceler
Tim, videoyu kapatır ve geliştiricileri pratik yapmaya devam etmeye teşvik eder. İzleyicilere, bir C# WinForms uygulamasında verilerin nasıl depolandığı, geri alındığı ve görüntülendiğinin anlaşılmasının, güvenilir sistemler oluşturmak için gerekli olduğunu hatırlatır.
Bu ders, geliştiricilerin gerçek veriler, gerçek hatalar ve gerçek iş akışlarıyla nasıl başa çıkacağını gösterir—Tim Corey'nin gösterdiği gibi adım adım.

