Ankara Üniversitesi
Nallıhan Meslek Yüksekokulu
Yerel Veri Tabanına Bağlanmak ve Verileri Listelemek
İLERI GÖRSEL PROGRAMLAMA
ÖĞR.GÖR. MAHMUT KILIÇASLAN
Konular [1]
ADO.NET
ADO.NET Veri Erişim Modelleri
◦ Bağlantılı (Connected) model
◦ Bağlantısız (Disconnected) model
ADO.NET Sınıfları
Örnek uygulama
ADO.NET [1]
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 [1]
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 [1]
ADO.NET sınıfları [1]
Kullanılacak veritabanı türüne göre XXX yerine Sql, OleDb, Oracle veya Odbc ön ekleri kullanılmaktadır.
Örneğin Sql Server için bağlantı nesnesi SqlConnection olmaktadır.
Veritabanı türü Bağlantı nesnesi
Sql Server 2000, 2005 veya 2008
SqlConnectionOracle
OracleConnectionOdbc veri kaynağı
OdbcConnectionAccess ve diğer veritabanları
OleDbConnectionADO.NET Sınıfları [1]
Diğer bazı sınıflar
Sınıf adı Sql Server Oracle Access v.b.
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ı [1]
Bu sınıfları kullanmak için kodumuza belli kütüphaneleri using ifadesi ile eklememiz gerekmektedir.
Örneğin SqlConnection, SqlCommand gibi Sql Server’a özel sınıfları kullanmak için kodumuza aşağıdaki ifade eklenmelidir
using System.Data.SqlClient;
ADO.NET sınıfları [1]
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 ve diğerleri System.Data.OleDbClient
ADO.NET sınıfları [1]
Bağlantılı veri erişiminde kullanılan sınıflar ve kullanım amaçları
Sınıf Amaç
SqlConnection Veritabanına bağlantı kurar, diğer nesneler bu nesne üzerinden sorgulama yaparlar
SqlCommand Veritabanı üzerinde sorgu (SELECT, DELETE, INSERT v.b.) çalıştırılmasını sağlar.
SqlDataReader SqlCommand ile çalıştırılan bir SELECT
sorgusunun sonucunu satır satır okumaya
yarar
ADO.NET sınıfları [1]
Bağlantısız veri erişiminde kullanılan sınıflar ve kullanım amaçları
Sınıf Amaç
SqlConnection Bağlantılı kullanımla aynıdır, ortak bir sınıftır.
SqlDataAdapter 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ı [1]
Herhangi bir ADO.NET sınıfı kullanılırken önce new operatörü ile oluşturulur.
SqlConnection c = new SqlConnection();
Oluşturulan değişken üzerinden nesnenin özellikleri değiştirilir veya metotları çağrılır
c.ConnectionString = @" ……… ";
c.Open( );
c.Close( );
ADO.NET sınıfları [1]
Örnek bir SqlCommand kullanımı
SqlCommand cmd = new SqlCommand( );
cmd.Connection = c;
cmd.CommandText = "DELETE FROM müşteriler WHERE ID=1";
cmd.ExecuteNonQuery( );
Bu kod parçası kurulan “c” bağlantısı üzerinden musteriler tablosundaki ID
değeri 1 olan kayıt silinmektedir.
ADO.NET sınıfları [1]
SqlCommand nesnesinde kullanılan özellik ve metotların amaçları
Özellik/Metot Amaç
cmd.Connection Sorgulamanın hangi bağlantı üzerinden yapılacağını belirler cmd.CommandText Hangi SQL sorgusunun çalışacağını belirler. Buraya geçerli bir
SQL sorgusu (SELECT, DELETE, INSERT v.b.) yazılmalıdır.
cmd.ExecuteNonQuery( ) Yazılan, geriye sonuç döndürmeyen sorguyu çalıştırır. Yazılan sorgu SELECT dışında bir sorgu olmalıdır.
cmd.ExecuteScalar( ) SELECT sorgusu sonucu geriye dönen ilk değeri almak için kullanılır
cmd.ExecuteReader( ) SELECT sorgusu sonucu geriye dönen satırları SqlDataReader
ile satır satır okumak için kullanılır
Örnek bir uygulama [1]
Veritabanındaki en son sipariş tarihini textBox içine yazdıran program.
Bunun için gerekli database Sql server aracılığı ile oluşturulur. Bu
uygulamaya başlamadan SQL SERVER üzerinde veritabanı örnek veriler ile doldurulmuş olarak hazırlanmalıdır.
Dosyalar hazırlandıktan sonra Visual C# Express Edition açılır ve yeni bir
proje oluşturulur….
Örnek bir uygulama [1]
Yeni proje oluşturma yollarından birisi Start Page’deki Create seçeneğini
kullanmaktır
Örnek uygulama [1]
Proje türü:
“Windows Forms Application”
Proje adı :
“VtIlkDeneme”
Örnek bir uygulama [1]
Form üzerine bir TextBox kontrolü (textBox1) konuluyor…
TextBox’ın
Multiline özelliği true Dock özelliği Fill olarak
seçiliyor
Örnek uygulama [1]
Form ekrana geldiğinde müşterilerin textbox1’e yüklenmiş olmasını istiyoruz Bunun için Form’un Load olayına kod yazacağız.
Events(Olaylar) ekranından Load’a çift
tıklayarak da aynı iş yapılabilir
Load olayına kod yazmak için Form’un boş bir kısmına çift
tıklanıp, kod ekranı
açılmalıdır
Örnek uygulama [1]
private void Forml_Load(object sender, EventArgs e) {
SqlConnection c = new SqlConnection(); c.ConnectionString = @"Data Source=.\SQLEXPRESS;
AttachDbFilename=C:\dell\ticaret.mdf;
Integrated Security=True;
Connect Timeout=30;
User Instance=True";
c.Open();
SqlCommand cmd = new SqlCommand("SELECT * FROM musteriler", c);
SqlDataReader r = cmd.ExecuteReader();
while (r.Read())
textBox1.Text += r["must_ad"] + "\r\n"; r.Close();
c.Close();
}
Örnek uygulama [1]
F5 tuşuna veya çalıştır tuşuna basarak program
çalıştırılır
Kaynaklar
1. Karabulut M. 2012, Görsel Programlama II Ders Sunuları