3. Vaka Çalışması
Bir kullanıcının, bir belediyenin “Maison de la petite enfance” derneğine bağlı çocuk bakıcılarının maaş hesaplamalarını simüle etmesine olanak tanıyan bir .NET uygulaması yazmak istiyoruz. Uygulamanın DotNet kodunun yapısı kadar kodun kendisi de üzerinde durulacaktır.
3.1. veritabanı
Maaş bordrosunu oluşturmak için gerekli statik veriler, dbpam (pam=Çocuk Bakıcısı Maaşı) adlı bir SQL Server Express veritabanında yer almaktadır. Bu veritabanının sa adlı bir yöneticisi vardır ve şifresi msde'dir.
![]() |
Veritabanında EMPLOYES, COTISATIONS ve INDEMNITES adlı üç tablo bulunur ve bunların yapısı şu şekildedir:
Table EMPLOYES : rassemble des informations sur les différentes assistantes maternelles
Yapı:
![]() |
|
İçeriği şu şekilde olabilir:
![]()
Table COTISATIONS : rassemble les taux des cotisations sociales prélevées sur le salaire
Yapı:
![]() |
İçeriği şu şekilde olabilir:
Sosyal güvenlik prim oranları çalışandan bağımsızdır. Yukarıdaki tablo sadece bir satırdan oluşur.
Table INDEMNITES : rassemble les différentes indemnités dépendant de l'indice de l'employé
![]() |
|
İçeriği şu şekilde olabilir:

Ödeneklerin çocuk bakıcısından bakıcıya farklılık gösterebileceği unutulmamalıdır. Bu ödenekler, çocuk bakıcısının maaş endeksi aracılığıyla o bakıcıya özel olarak belirlenir. Örneğin, maaş endeksi 2 olan Bayan Marie Jouveinal’ın (EMPLOYES tablosu) saatlik ücreti 2,1 avrodur (INDEMNITES tablosu).
Üç tablo arasındaki ilişkiler şu şekildedir:
![]() |
EMPLOYES (INDICE) sütunu ile INDEMNITES (INDICE) sütunu arasında bir yabancı anahtar ilişkisi vardır.
Bu şekilde oluşturulan [dbpam] veritabanı, SQL Server Express klasöründe iki dosya oluşturur:
![]() |
'deki [dbpam.mdf, dbpam_log.ldf] dosyaları başka bir makineye taşınabilir ve bu makinedeki SGBD SQL Server Express'e yeniden eklenebilir. Bunun için aşağıdaki adımları izleyin:
- BD ve [dbpam] dosyaları bir klasöre kopyalanır
![]() |
- SQL Server Express
- SQL Server Management Studio Express istemcisi ile [dbpam.mdf] dosyasını SGBD dosyasına ekleyin:
![]() |
![]() |
- [Databases] dosyasına sağ tıklayın / Ekle
- [dbpam.mdf] dosyasını bir düğme aracılığıyla seçin ([Add] dosyası gösterilmemiştir)
- Eklenen dosya, daha önce mevcut olmaması gereken bir BD dosyası oluşturacaktır. Burada, [Attach As] alanında, yeni BD dosyasına [dbpam2] adı verilmiştir.
- Yeni BD dosyası ve tabloları görülüyor
Bir BD dosyasını ekleme tekniği, bir BD dosyasını bir iş istasyonundan diğerine aktarmak için kullanışlıdır ve burada zaman zaman bu yöntemi kullanacağız.
3.2. 'de bir çocuk bakıcısının maaşının hesaplanma yöntemi
Şimdi bir çocuk bakıcısının aylık maaşının hesaplanma yöntemini sunacağız. Örnek olarak, ödeme yapılacak ay boyunca 20 gün boyunca 150 saat çalışmış olan Bayan Marie Jouveinal'ın maaşını ele alacağız.
Aşağıdaki unsurlar dikkate alınır: | | |
Çocuk bakıcısının temel maaşı aşağıdaki formülle hesaplanır: | ||
Bu temel maaştan belirli miktarda sosyal güvenlik primi kesilmelidir: | | |
Toplam sosyal güvenlik primleri: | ||
Ayrıca, çocuk bakıcısı, çalıştığı her gün için geçim ödeneği ve yemek ödeneği almaya hak kazanır. Bu kapsamda aşağıdaki ödenekleri alır: | | |
Sonuç olarak, çocuk bakıcısına ödenecek net maaş şu şekildedir: |
3.3. Hatırlatmalar ADO.NET
Maaş hesaplama uygulaması, [dbpam] veritabanındaki bilgilere ihtiyaç duyar. Uygulamanın mimarisi şu şekilde olacaktır:
![]() |
- [1]'te kullanıcı bir talep oluşturur
- [2]'te, bordro uygulaması bu talebi işler.
- Bu durumda veritabanındaki verilere ihtiyaç duyabilir. Ardından, SGBD tarafından kullanılan [4] sağlayıcısına (provider) ADO.NET sorgusu gönderir.
- Bu sağlayıcı, [5] veritabanını işler ve sonuçları ADO.NET sağlayıcısına iletir; bu sağlayıcı da sonuçları uygulamaya iletir
- Uygulama bu sonuçları işleyerek kullanıcı için [5] yanıtını oluşturur
Şimdi, bir ADO.NET sağlayıcısının [3] müşterilerine sunduğu başlıca arayüzleri hatırlatalım.
Bağlı modda, uygulama:
- veri kaynağıyla bir bağlantı kurar
- veri kaynağıyla okuma/yazma modunda çalışır
- bağlantıyı kapatır
Bu işlemlerle esas olarak üç ADO.NET arayüzü ilgilidir:
- IDbConnection, bağlantının özelliklerini ve yöntemlerini kapsar.
- IDbCommand, yürütülen SQL komutunun özelliklerini ve yöntemlerini kapsar.
- IDataReader, SQL Select komutunun sonucunun özelliklerini ve yöntemlerini kapsar.
IDbConnection arayüzü
Veritabanıyla olan bağlantıyı yönetmek için kullanılır. Bu arayüzün M yöntemleri ve P özellikleri arasında şunlar bulunur:
Ad | Tür | Rol |
P | veritabanına bağlantı dizesi. Belirli bir veritabanıyla bağlantı kurulması için gerekli tüm parametreleri belirtir. | |
M | ConnectionString ile tanımlanan veritabanına bağlantıyı açar | |
M | bağlantıyı kapatır | |
M | işlemi başlatır. | |
P | bağlantı durumu: ConnectionState.Closed, ConnectionState.Open, ConnectionState.Connecting, ConnectionState.Executing, ConnectionState.Fetching, ConnectionState.Broken |
Connection, IDbConnection arayüzünü uygulayan bir sınıf ise, bağlantı şu şekilde açılabilir:
IDbCommand arayüzü
Bir SQL komutunu veya depolanmış bir yordamı yürütmek için kullanılır. Bu arayüzün M yöntemleri ve P özellikleri arasında şunlar bulunur:
Ad | Tür | Rol |
P | yürütülmesi gerekeni belirtir - değerlerini bir sıralamadan alır: - CommandType.Text: CommandText özelliğinde tanımlanan SQL komutunu yürütür. Bu, varsayılan değerdir. - CommandType.StoredProcedure: veritabanında depolanmış bir yordamı yürütür | |
P | - CommandType = CommandType.Text ise çalıştırılacak SQL komutunun metni - CommandType = CommandType.StoredProcedure ise çalıştırılacak saklı yordamın adı | |
P | SQL emrini yürütmek için kullanılacak IDbConnection bağlantısı | |
P | SQL emrini yürütmek için kullanılacak IDbTransaction işlemi | |
P | parametreleri ayarlanmış bir SQL emrinin parametre listesi. "update articles set price=price*1.1 where id=@id" emrinin @id parametresi vardır. | |
M | SQL ve Select emirlerini yürütmek için. Select emrinin sonucunu temsil eden bir IDataReader nesnesi elde edilir. | |
M | komutunu kullanarak SQL Update, Insert, Delete komutunu çalıştırmak. İşlemden etkilenen satır sayısı (güncellenen, eklenen, silinen) elde edilir. | |
M | SQL Select emrini çalıştırmak için; örneğin select count(*) from articles gibi tek bir sonuç veren bir emir. | |
M | SQL emrinin parametrelerini içeren IDbParameter emrini oluşturmak için. | |
M | farklı parametrelerle birden çok kez yürütüldüğünde, parametreli bir sorgunun yürütülmesini optimize etmenizi sağlar. |
Command, IDbCommand arayüzünü uygulayan bir sınıf ise, işlem içermeyen bir SQL emrinin yürütülmesi aşağıdaki gibi olacaktır:
IDataReader arayüzü
, SQL ve Select emirlerinin sonuçlarını kapsüllemek için kullanılır. Bir IDataReader nesnesi, sırayla işlenen satır ve sütunlardan oluşan bir tabloyu temsil eder: önce 1. satır, sonra 2. satır, ... Bu arayüzün M yöntemleri ve P özellikleri arasında şunlar bulunur:
Ad | Tür | Rol |
P | IDataReader tablosundaki sütun sayısı | |
M | GetName(i), IDataReader tablosundaki i numaralı sütunun adını döndürür. | |
P | Item[i], IDataReader tablosunun geçerli satırındaki i numaralı sütunu temsil eder. | |
M | IDataReader tablosunun bir sonraki satırına geçer. Okuma işlemi başarılı olursa True boole değerini, aksi takdirde False değerini döndürür. | |
M | IDataReader tablosunu kapatır. | |
M | GetBoolean(i): IDataReader tablosunun geçerli satırındaki i numaralı sütunun boole değerini döndürür. Diğer benzer yöntemler şunlardır: GetDateTime, GetDecimal, GetDouble, GetFloat, GetInt16, GetInt32, GetInt64, GetString. | |
M | Getvalue(i): IDataReader tablosunun geçerli satırındaki i numaralı sütunun değerini object türü olarak döndürür. | |
M | IsDBNull(i), IDataReader tablosunun geçerli satırındaki i numaralı sütunda değer yoksa (bu durum SQL NULL değeriyle gösterilir) True değerini döndürür. |
Bir IDataReader nesnesinin kullanımı genellikle aşağıdaki gibidir:









