ADO.NET & C#
Merhaba arkadaşlar bu yazımızda ado.net teknolojisinden bahsedeceğiz..
Ben konuyu daha çok bir örnek üzerinden anlatma taraftarıyım..O halde başlayalım..
Öncelikle kısaca konuyu anlamanız açısından ilk defa duyanlar için ado.net kavramını açıklayalım ve daha sonra konumuza devam edelim.
Ado.net microsoft tarafından geliştirilmiş olunan bir veritabanı kullanım teknolojisi olarak ifade edilebilir.Karıştırılmaması gereken nokta ise önceden varolan ADO kavramı ile alakasının olmamasıdır..ADO.NET in en büyük özelliği alışılagelmiş olunan şu mantıktı;
veritabanınız var ve siz bu veritabanından birşeyler sorgulamak istiyorsunuz bunun için bağlantı kuruyorsunuz,ADO.NET de ise bağlantısız veritabanı teknolojisi çok büyük kolaylıklar sağlıyor geliştiricilere.Dolayısıyla veritabanı gereksiz yere meşgul edilmiyor ve performans büyük ölçüde artırılıyor.Ayrıca xml verilerini çok rahat bir şekilde kullanmamızada imkan tanıyor ve dahası..
Bu kısa açıklamadan sonra konumuza devam edelim..
Resimdeki şekilde bir form oluşturabilirsiniz öncelikle..
Öncelikle veritabanına bağlanmak için connection_string oluşturuyoruz..
public static string connectionString = " provider=Microsoft.JET.OLEDB.4.0; +" data source="+Application.StartupPath+"adodb.mdb";
bu kısımda dikkat edilmesi gereken veritabanınızın bulunduğu dizin ile beraber tanımlamanız..
C:\adodb.mdb gibi..
Şimdi OleDataAdapter Nesnesini oluşturuyoruz..
string commandstring = "select * from TelefonNumarasi"; dataAdapter = new OleDbDataAdapter(commandstring,connectionString);
INSERT COMMAND
dataAdapter.InsertCommand=connection.CreateCommand();
dataAdapter.InsertCommand.CommandText=
"insert into TelefonNumarasi"+
"(Telefonnum,Isim)"+
"values"+
"(?,?)";
dataAdapter.InsertCommand.Parameters.Add("Telefonnum",OleDbType.Chart,0,"Telefonnum");
dataAdapter.InsertCommand.Parameters.Add("Isim",OleDbType.Char,0,"Isim");
Burada belirtmek istediğim şey şu ;
dataAdapter içerisinde tanımladığımız Telefonnum ve Isim parametreleri veritabanımızdaki TelefonNumarasi tablosundaki iki column’u ifade etmektedir..Sizde farklılık gösterebilir..
Güncellemek için kullanacağımız komut dizisi şu şekildedir..
// Güncelleme yapmak için kullanılan komutlarımız.
dataAdapter.UpdateCommand=connection.CreateCommand();
dataAdapter.UpdateCommand.CommandText="update TelefonNumarasi"+
"set Isim =?"+
"where Telefonnum=?";
dataAdapter.UpdateCommand.Parameters.Add("Isim",OleDbType.Char,0,"Isim");
dataAdapter.UpdateCommand.Parameters.Add("Telefonnum",OleDbType.Char,0,"Telefonnum");
// Silmek için kullanılan komutlarımız
dataAdapter.Deleteommand=connection.CreateCommand();
dataAdapter.DeleteCommand.CommandText=
"delete from TelefonNumarasi where Isim =?";
dataAdapter.DeleteCommand.Parameters.Add("Telefonnum",OleDbType.Char,0,"Telefonnum");
Data Set Sınıfımız
dataSet=new DataSet(); dataSet.CaseSensitive=true; dataAdapter.Fill(dataSet,"Telefonnum"); Fill_lb();
Fil_lb Methodu
dataTable = dataSet.Tables[0];
listBox1.Items.Clear();
foreach (DataRow dataRow in dataTable.Rowa)
{
LoadBuffers(dataRow);
listBox1.Items.Add(Telefonnum+"tt\"+Isim);
}
Düzeltme işlemi yapmayı gösterelim..
// Satır seçiyoruz
DataRow selectedRow = dataTable.Rows[listBox1.SelectedIndex];
// kullanıcı bilgisi
Application.DoEvents();
// Satırda düzeltme işlemi yapıyoruz
selectedRow.BeginEdit();
selectedRow["Isim"] = txtIsim.Text.Trim();
selectedRow.EndEdit();
// Değiştirilmiş her satırı alıyoruz
DataSet dsChanges =
dataSet.GetChanges(DataRowState.Modified);
// Hatalarla beraber aynen değiştiriliyor..
bool okayFlag = true;
if (dsChanges.HasErrors)
{...}
//Hata yoktur mesajı
if (okayFlag)
{
// Veritabanı güncelleniyor
dataAdapter.Update(dsChanges,\\\\\\\\"TelefonNumarasi\\\\\\\\");
// Kullanıcıya bildiriyoruz bunu..
MessageBox.Show("Updated " + selectedRow["Telefonnum"]);
Application.DoEvents();
//Düzeltme yapıldı listboxu yeniliyoruz..
dataSet.AcceptChanges();
Fill_lb();
}
else // Hata varsa değişiklikleri iptal ediyoruz..
dataSet.RejectChanges();
Silme İşlemi
//Liste olarak seçilen satır getiriliyor..
DataRow selectedRow = dataTable.Rows[listBox1.SelectedIndex];
string msg = selectedRow["Telefonnum"] +" deleted.";
//Seçilen satır siliniyor
selectedRow.Delete();
// Veritabanından Siliniyor
try
{
dataAdapter.Update(dataSet,"Telefonnum");
dataSet.AcceptChanges();
//Listboxu yeniliyoruz..
Fill_lb();
// Kullanıcıya bildiriyoruz..
MessageBox.Show(msg);
Application.DoEvents();
}
catch (OleDbException ex)
{
dataSet.RejectChanges();
MessageBox.Show(ex.Message);
}
thecoders.net | Oguzz















