Veritabanı İşlemleri ADO.NET .Net tabanlı uygulamalar için birincil veriye ulaşım modeli. ADO’nun sonraki versiyonu İki kısma ayrılabilir Provider (sağlayıcı) objeleri DataSet objeleri System.Data namespace System.Data.xxx namespace ADO.NET - Providers Veri kaynağına bağlantı ve ulaşımı sağlarlar. Her veri kaynağının kendisi için yazılmış provider objeleri vardır. Genel olarak provider’lar Connection Command Parameter DataAdapter DataReader olarak sayılabilir. ADO.NET - Connection Veri kaynağına ulaşmak için kullanılacak bağlantıyı sağlar. Belirli tipleri OdbcConnection OleDbConnection SqlConnection OracleConnection Db2Conneciton ADO.NET - OleDbConnection Object Linking and Embedding Database OleDb herhangi bir veri kaynağına herhangi bir ortamdan ulaşmayı hedefleyen bir teknoloji Veri kaynağı değişse bile aynı araçları kullanarak veriye erişim Odbc(Open Data Base Connectivity) vs OleDb System.Data.Oledb ADO.NET - OleDbConnection Sık kullanılan değişken ve fonksiyonları ConnectionString ConnectionTimeout BeginTransaction() Close() CreateCommand() Open() ADO.NET - OleDbConnection Programa oledb bağlantısı eklemek için Toolbox ’tan OleDbConnection nesnesi sürükle-bırak yöntemi ile formun üzerine konulur. ADO.NET - OleDbConnection Bağlantını özelliklerini ayarlamak için ekranın altındaki bağlantı nesnesine sağ tuşla tıklayıp, açılan menüden Properties sekmesini seçilmelidir. Açılan pencereden bağlantının ismini değiştirdikten sonra Connection String özelliğine tıklayarak, nesnenin bağlantı Özelliklerinin ayarlandığı pencere açılmalıdır. ADO.NET - OleDbConnection Açılan pencerenin ilk tabından bağlanılacak Veri kaynağının tipi seçilir. DB2 veritabanına bağlanmak için Microsfot Jet 4.0 OLE Db Provider seçeneği seçilmelidir. Not: Bu işlem Server Explorer’da bağlantı tanımlama İşlemi ile hemen hemen aynıdır. ADO.NET - OleDbConnection ADO.NET - OleDbConnection ADO.NET - Command Veri kaynağına üzerinde okuma, yazma, güncelleme, silme gibi işlemleri yapmayı sağlar. Belirli tipleri OdbcCommand OleDbCommand SqlCommand OracleCommand Db2Command ADO.NET - OleDbCommand OleDb teknolojisini kullanır. Sık kullanılan değişken ve fonksiyonları CommandText Connection Parameters Transaction ExecuteNonQuery() ExecuteReader() ADO.NET - OleDbCommand Yapıcıları OleDbCommand() OleDbCommand(string commandText) OleDbCommand(string commandText, OleDbConnection myoledbConnection) OleDbCommand(string commandText, OleDbConnection myoledbConnection, OleDbTransaction myoledbtransaction) ADO.NET - OleDbCommand Nesneni n tipi Nesneni n Adı Kulanacağı bağlantı Çalıştıracağı komut ADO.NET - Parametre Command nesnesine tek bir parametre bilgisi sağlar. Kulanım metodu Parametre eklenecek yerileri özel bir karakterle ayrılmış bir command nesnesi oluştur. Parametreleri daha önceden belirlenmiş değerlerle doldur. Komutu çalıştır. ADO.NET – Parametre Örnek Parametr e Ekle Parametrenin Tipi Parametrenin Boyutu Parametreye Değer Atama ADO.NET – DataReader Büyük veri yığınları üzerinde herhangi kayıt yapmadan efektif bir şekilde çalışmayı sağlar. Belirli tipleri OdbcDataReader OleDbDataReader SqlDataReader OracleDataReader Db2DataReader ADO.NET - OleDbDataReader Yapıcısı yerine command nesnesinin ExecuteReader() fonksiyonundan dönen nesneyi kullanır. Read() fonksiyonu çağrılarak okumaya başlar veya sonraki kayıta geçer. OleDbDataReader ordr = ocmd.ExecuteReader(); if(ordr.Read()) While(ordr.Read()) Reader nesnesinin indexli elemanları veya Get fonksiyonları ile veriye ulaşılır. ordr[0].ToString(); ordr[“KolonAdı”].ToString() ordr.GetString(0); ADO.NET - OleDbDataReader Eğer bağlantı sonradan kullanılmaya devam edecekse Close() fonksiyonu ile reader nesnesi kapatılmalıdır. ordr.Close() Sık kullanılan değişken ve fonksiyonları IsClosed FieldCount GetInt32(), GetDecimal(), GetString() ...... IsDBNull() Read() Close OleDbDataReader Örnek Komut Nesnesi OleDbDataReader Nesnesi Eğer veri varsa Reader Nesnesine Veri Çek Kolon numarasına göre veri çekilmesi OleDbDataReader Örnek Komut Nesnesi OleDbDataReader Nesnesi Eğer veri varsa Reader Nesnesine Veri Çek Kolon adına göre veri çekilmesi ADO.NET - OleDbDataAdapter DataSet objesi ile veri kaynağı arasında veri iletimi için köprü vazifesi görür. Yapıcıları SqlDataAdapter() SqlDataAdapter(SqlCommand mySqlCommand) SqlDataAdapter(string selectCommandString, SqlConnection mySqlConnection) SqlDataAdapter(string selectCommandString, string connectionString) ADO.NET - OleDbDataAdapter Sık kullanılan değişken ve fonksiyonları Fill() Update() Uyarı : SqlDataAdapter nesnesini SqlDataAdapter(string selectCommandString, string connectionString) metodu ile oluşturmak yerine var olan bir bağlantı nesnesini kullanmak perform arttırır. ADO.NET - OleDbDataAdapter AdataAdapte r Nesnesini Oluştur Dataset Nesnesini Oluştur Verileri Dataset Nesnesine Aktar Bağlantı Nesnesini Ekle ADO.NET – DataSet Objeleri Dataset objeleri hafızada basit bir ilişkisel veritabanı tanımlamaya yarayan sınıflardır. DataAdapter nesnesini kullanarak veriye ve veritabanın şemasına olaşır. DataSet sınıfları DataSet DataTable DataColumn DataRow ADO.NET – DataSet Objeleri DataSet objeleri hiyerarşik olarak yapılandırılmıştır. ADO.NET – DataSet Sınıfı Dataset sınıfı bütün veritabanını temsil eder. Tabloları ve tablolar arasındaki bağlantıları içerir. DataAdapter sınıfının Fill() fonksiyonu ile içerisi doldurulur. Sık kullanılan fonksiyon ve özellikleri Tables AcceptChanges() Clear() ADO.NET – DataSet Sınıfı Yapıcıları DataSet() DataSet(string dataSetNameString) Örnek DataSet myDataSet = new DataSet(); DataSet myDataSet = new DataSet("myDataSet"); DataSet Tipi Nesnenin Adı Yeni bir Nesne Oluştur Tablonun Adı ADO.NET – DataTable Sınıfı DataSet nesnesinin içerisinde bulunur. Adı, satırları ve sütunları vardır. Genellikle yapıcısı ile oluşturulmak yerine DataSet nesnesinde ulaşılarak kullanılır. Bir DataSet nesnesinin içerisinde birden fazla DataTable sınıfı bulunabilir. ADO.NET – DataColumn ve DataRow DataColumn veritabanı tablosundaki bir kolonu temsil eder. Kolon ile ilgili olarak ad ve tip verisi tutar. DataRow veritabanı tablosundaki satırı temsil eder. Verileri taşımanın yanında güncelleme, silme ve ekleme işlemlerinde de kullanılır. ADO.NET – DataColumn ve DataRow Komut Nesnesi Dataset Nesnesi Dataset Nesnesine Veri Çek DataAdapte r Nesnesi Dataset Nesnesinin İlk Tablosunun Satırları İlk satırdan kolon numarasına göre veri çekilmesi Where anahtar kelimesi Hedef veri kümesini filtrelemek için kullanılır. Belirli satırları eler, diğerlerini geçirir. Where konutu olmadan bütün satırlar çekilir. Kolonlar üzerinde çalışır. Veri tipine göre yazılmalıdır. Örnek SELECT * FROM PERSONEL WHERE ADI = ‘ALİ’ SELECT * FROM PERSONEL WHERE ADI LIKE ‘AL%’ Bu sorgu personel tablosundan adı ALİ olan tüm kayıtları getirir. Where anahtar kelimesi tablo adından sonra gelmelidir. Daha sonra filtreleme kriterleri gelmelidir. Bu sorgu personel tablosundan adı AL ile başlayan tüm kayıtları getirir. LIKE anahtar kelimesi benzer kayıtları getirir. SELECT * FROM PERSONEL WHERE ADI = ‘ALİ’ AND SOYADI = ‘KAYA’ Where anahtar kelimesi birden fazla filtreleme kriterini aynı anda içerebilir Bu örnekte tablodan hem adı ALİ soyadı KAYA olan kayıtlar döner. Delete anahtar kelimesi Kayıtların tablodan silinmesi için kullanılır. Genellikle Where anahtar kelimesi ile beraber kullanılır. Transaction nesnesi ile beraber kullanılmadığında geri dönüşü olmadığından dikkatle kullanılmalıdır. Komut nesnesinin içerisine yazılarak ExecuteNonQuery fonksiyonu çağrılarak çalıştırılır. Örnek DELETE FROM PERSONEL DELETE FROM PERSONEL WHERE YAS < 18 Bu komut personel tablosundaki tüm kayıtları siler. Bu sorgu personel tablosundan yaşı 18 den küçük olan tüm kayıtları siler. DELETE FROM PERSONEL WHERE ADI LİKE ‘AL%’ Bu sorgu personel tablosundan adı AL ile başlayan tüm kayıtları siler. Update anahtar kelimesi Tablodaki verileri değiştirmek/güncellemek için kullanılır. Delete->Insert yönteminden daha efektiftir. Genellikle Where anahtar kelimesi ile beraber kullanılır. Güncellenecek kolon isimleri ve değerleri verilmelidir Komut nesnesinin içerisine yazılarak ExecuteNonQuery fonksiyonu çağrılarak çalıştırılır. Örnek UPDATE PERSONEL SET ADI = ‘ALİ’ Personel tablosundaki tüm kayıtların ad alanlarına ALİ yazar. UPDATE PERSONEL SET YAS = 18 WHERE YAS < 18 Personel tablosundan yaşı 18 den küçük olan tüm kayıtları 18 yaşına getirir. İki tablodan beraber veri çekmek İki tablonun kolonlarını birleştirerek tek satırda veri getirir. Tabloların genellikle birer kolonlarının eşleştirilmesiyle gerçekleştirilir. Benzer kolon isimlerinde tablolara kod adı verilerek ilgili kolonlar işaretlenebilir. Örnek KIMLIK TCID 11111 22222 AD ALİ VELİ DERSLER SOYAD KAYA TAN NOTLAR TCID DERS NOT KOD 11111 5 50 11111 6 70 DRSKOD DERSAD 5 FİZİK 6 KİMYA Örnek Kimlik tablosunda öğrencinin TC Kimlik numarası, adı ve soyadı Dersler tablosunda derslerin kodları ve adları Notlar tablosunda ise öğrencilerin dersler bazında aldıkları notlar bulunmaktadır. Bir öğrencinin belirli bir dersten aldığı notu nasıl buluruz? Örnek Cevap : 3 tabloyu birleştirerek. Nasıl? Öğrencinin TC Kimlik numarası kimlik tablosundan elde edilir. Öğrencinin aldığı dersler notlar tablosundan elde edilir. Derslerin adları dersler tablosundan elde edilir. Öğrencinin aldığı not notlar balosundan elde edilir. Örnek Eşleşme Kimlik tablosu ve Notlar tablosu arasında TCKIMLIK kolonları ile Notlar tablosu ve Dersler tablosu arasında ise DRSKOD ve DERSKOD kolonları arasında gerçekleştirilir. Örnek Öğrencinin adı,soyadı ve aldığı dersler ve notları öğrenmek için SELECT ADI,SOYADI,DERSAD,NOT FROM KIMLIK,NOT,DERSLER WHERE KIMLIK.TCKIMLIK = NOTLAR.TCKIMLIK AND NOTLAR.DERSKOD = DERSLER.DERSKOD Örnek Eğer öğrencinin TC Kimliği de öğrenilmek istenseydi aynı kolon ismi hem Kimlik tablosunda hem de Notlar tablosunda bulunduğu için sorun çıkabilirdi. Bu sorunu engellemek için: SELECT KIMLIK.TCKIMLIK, ADI,SOYADI,DERSAD,NOT FROM KIMLIK,NOT,DERSLER WHERE KIMLIK.TCKIMLIK = NOTLAR.TCKIMLIK AND NOTLAR.DERSKOD = DERSLER.DERSKOD Çalışma Otel programı yazınız. Otelde belirli bir oda sayısı olacaktır. Seçilen oda ile ilgili odada kalan kişilerin bilgileri, kaç gün kaldığı ekstralar tutulacaktır. Odaya sıfırdan giriş ve boşaltma işlemleri olacaktır. Oda boşaltma esnasında kalınan günlere ve ekstralara göre ödenecek tutar hesaplanacaktır. Çalışma Veriler uygun şekilde tasarlanmış veritabanında tutulacaktır. Ödev tesliminde kodlar ve veritabanı dosyası beraber teslim edilecektir. Tablo tasarımı, ekran tasarımı, hata kontrolü ve kod kalitesi değerlendirme kriterleridir.