Görsel Programlama II Ado.Net İle Veritabanı İşlemleri Öğr.Gör. Yılmaz EROĞLU Konular ADO.NET ADO.NET Veri Erişim Modelleri ◦ Bağlantılı (Connected) model ◦ Bağlantısız (Disconnected) model ADO.NET Sınıfları ADO.NET ActiveX Data Objects (ActiveX Veri Nesneleri) Microsoft’un veri erişim teknolojisidir Tüm .NET dilleri (Visual Basic.NET, C# ve diğerleri) için ortak bir teknolojidir Visual Studio kurulumu ile Sql Server, Oracle ve Access veritabanları erişim için gereken eklentiler kurulu gelmektedir. Diğer veritabanları için, ör: MySQL, veritabanına özel sürücü kurularak onlara da bağlantı yapılabilir ADO.NET veri erişim modelleri Bağlantılı (Connected) model ◦ ◦ ◦ ◦ Tek yönlü okuma veya yazma işlemi Veriler güncel Veritabanı bağlantısı sürekli açık Ağ trafiği yoğun Bağlantısız (Disconnected) model ◦ ◦ ◦ ◦ Çift yönlü okuma ve yazma Veriler yerel olarak kaydedilir ve güncel değildir Veritabanı bağlantısı sürekli açık değildir Ağ trafiği nisbeten azdır ADO.NET veri erişim modelleri ADO.NET sınıfları Kullanılacak veritabanı türüne göre XXX yerine Sql, OleDb, Oracle veya Odbc ön ekleri kullanılmaktadır. Örneğin Access için bağlantı nesnesi OleDbConnection olmaktadır. Veritabanı türü Bağlantı nesnesi Sql Server 2000, 2005 veya 2008 SqlConnection Oracle OracleConnection Odbc veri kaynağı OdbcConnection Access OleDbConnection ADO.NET Sınıfları Diğer bazı sınıflar Sınıf adı Sql Server Oracle Access XxxConnection SqlConnection OracleConnection OleDbConnection XxxCommand SqlCommand OracleCommand OleDbCommand XxxDataAdapter SqlDataAdapter OracleDataAdapter OleDbDataAdapter XxxDataReader SqlDataReader OracleDataReader OleDbDataReader DataSet DataSet DataSet DataSet ADO.NET sınıfları Bu sınıfları kullanmak için kodumuza belli kütüphaneleri using ifadesi ile eklememiz gerekmektedir. Örneğin OleDbConnection, OleDbCommand gibi Access’e özel sınıfları kullanmak için kodumuza aşağıdaki ifade eklenmelidir ◦ using System.Data.OleDb; ADO.NET sınıfları Diğer veritabanları için gerekli using ifadeleri: Veritabanı türü using ifadesi Sql Server 2000, 2005, 2008 System.Data.SqlClient Oracle System.Data.OracleClient Odbc System.Data.OdbcClient Access System.Data.OleDb ADO.NET sınıfları Bağlantılı veri erişiminde kullanılan sınıflar ve kullanım amaçları Sınıf Amaç OleDbConnection Veritabanına bağlantı kurar, diğer nesneler bu nesne üzerinden sorgulama yaparlar OleDbCommand Veritabanı üzerinde sorgu (SELECT, DELETE, INSERT v.b.) çalıştırılmasını sağlar. OleDbDataReader OleDbCommand ile çalıştırılan bir SELECT sorgusunun sonucunu satır satır okumaya yarar ADO.NET sınıfları Bağlantısız veri erişiminde kullanılan sınıflar ve kullanım amaçları Sınıf Amaç OleDbConnection Bağlantılı kullanımla aynıdır, ortak bir sınıftır. OleDbCommand Veritabanı üzerinde sorgu (SELECT, DELETE, INSERT v.b.) çalıştırılmasını sağlar. OleDbDataAdapter Veritabanından kayıtları çekmek, çekilen kayıtlarda yapılan değişiklikleri de tekrar veritabanına kaydetmek için kullanılır. DataSet Veritabanından çekilen kayıtların depolanması ve yönetilmesi amacıyla kullanılır. Tüm veritabanı türleri için bu sınıf ortaktır. ADO.NET sınıfları Herhangi bir ADO.NET sınıfı kullanılırken önce new operatörü ile oluşturulur. ◦ OleDbConnection con = new OleDbConnection(); Oluşturulan değişken üzerinden nesnenin özellikleri değiştirilir veya metotları çağrılır ◦ con.ConnectionString = @” ……… “; ◦ con.Open( ); ◦ con.Close( ); ADO.NET sınıfları Örnek bir OleDbCommand kullanımı ◦ OleDbCommand komut = new OleDbCommand( ); ◦ komut.Connection = con; ◦ komut.CommandText = “DELETE * FROM musteriler”; ◦ komut.ExecuteNonQuery( ); Bu kod parçası kurulan “con” bağlantısı üzerinden musteriler tablosundaki kayıtları silmektedir. ADO.NET sınıfları OleDbCommand nesnesinde kullanılan özellik ve metotların amaçları Özellik/Metot Amaç komut.Connection Sorgulamanın hangi bağlantı üzerinden yapılacağını belirler komut.CommandText Hangi SQL sorgusunun çalışacağını belirler. Buraya geçerli bir SQL sorgusu (SELECT, DELETE, INSERT v.b.) yazılmalıdır. komut.ExecuteNonQuery( ) Yazılan, geriye sonuç döndürmeyen sorguyu çalıştırır. Yazılan sorgu SELECT dışında bir sorgu olmalıdır. komut.ExecuteScalar( ) SELECT sorgusu sonucu geriye dönen ilk değeri almak için kullanılır komut.ExecuteReader( ) SELECT sorgusu sonucu geriye dönen satırları OleDbDataReader ile satır satır okumak için kullanılır