ADO.NET – DataGrid,DataColumn ve DataRow Nesneleri
Bu yazımda DataGrid,DataColumn ve DataRow nesnelerinden bahsedeceğim.Manuel bir şekilde DataTable oluşturmayı,DataTableler arasında DataSet üzerinden ilişki kurmayı ve ilişkili kayıtlar üzerinden Disconnected çalışmayı göreceğiz.
DataGrid Nesnesi
DataGrid nesnesini verileri görüntülerken sıkça kullanırız.
DataColumn Nesnesi
DataTable içinde kolon yapıları DataColumn nesnesi sayesinde yapılır.
DataRow Nesnesi
DataTable içinde satır yapıları DataRow nesnesi sayesinde yapılır.
Öncelikle Visual Studio 2010 Toolbox’ında DataView nesnesi mevcut değildir.Nesnemizi ekleyebilmek için Toolbox’ta ister var olan kategorilerden birine yükleyebileceğimiz gibi istersekte Toolbox’ın boş bir yerine sağ tıklayarak Add Tab diyip kendi oluşturduğumuz kategoriye ekleyebiliriz.Ben Data kategorisine yüklemek istiyorum.Bunun için o kategoriye sağ tıklayıp Choose Items diyorum.DataGrid’i ekliyorum.Artık nesnemizin Toolbox’a gelmesi gerekiyor.Formumuza bir tane DataGrid nesnesi ekleyerek devam ediyorum.
Şimdi manuel bir şekilde DataTable oluşturmaya bakalım.
“Markalar” ve “Otomobiller” adlı iki adet tablo oluşturalım.
DataTable markalar = new DataTable("Markalar");
DataTable otomobiller = new DataTable("Otomobiller");
DataSet tablolar = new DataSet("Tablolar");
private void Form1_Load(object sender, EventArgs e)
{
//Markalar------------
DataColumn MarkaId = new DataColumn("MarkaId");
MarkaId.DataType = typeof(int);
//Veri tipi int olsun
MarkaId.AutoIncrement = true;
//Otomatik artsın mı?
MarkaId.AutoIncrementSeed = 1;
//Kaçtan başlasın?
MarkaId.AutoIncrementStep = 1;
//Kaçar kaçar artsın?
DataColumn MarkaAdi = new DataColumn("MarkaAdi");
MarkaAdi.Unique = true;
//Bu kolonda tekrar eden kayıt olmasın.Bu kolonun Unique eşsiz,benzersiz,tekil olsun
MarkaAdi.DataType = typeof(string);
//Otomobiller------------
DataColumn OtomobilId = new DataColumn("OtomobilId");
OtomobilId.DataType=typeof(int);
OtomobilId.AutoIncrement = true;
OtomobilId.AutoIncrementSeed = 1;
OtomobilId.AutoIncrementStep = 1;
DataColumn OtomobilMarkaId = new DataColumn("OtomobilMarkaId");
//Bu tablo markalar tablosundaki MarkaId tablosuyla ilişkili olacak.
OtomobilMarkaId.DataType=typeof(int);
DataColumn OtomobilModeli = new DataColumn("Otomobil Modeli");
OtomobilModeli.DataType=typeof(string);
DataColumn OtomobilRengi = new DataColumn("OtomobilRengi");
OtomobilRengi.DataType = typeof(string);
}
Oluşturduğumuz kolonları tablolara ekleyelim.
markalar.Columns.Add(MarkaId);
markalar.Columns.Add(MarkaAdi);
otomobiller.Columns.Add(OtomobilId);
otomobiller.Columns.Add(OtomobilMarkaId);
otomobiller.Columns.Add(OtomobilModeli);
otomobiller.Columns.Add(OtomobilRengi);
Şimdi ise oluşturduğumuz tablolarda primary key kolonlarını seçelim.
Otomobiller tablosunda OtomobilId,Markalar tablosunda ise MarkaId kolonlarını primary key yapalım.
T-SQL de primary key yapmak aslında bir constraint olduğuna göre,C# ta da constraint oluşturacağız.
markalar.Constraints.Add("Pr_markaid", markalar.Columns["MarkaId"], otomobiller.Constraints.Add("Pr_otomobilid",otomobiller.Columns["OtomobilId"],true);
Yukarda istediğimiz kolonları primary key yaptıktan sonra,bu tablolar arasında foreign key ilişkilerini kuralım.
DataTable’ler arasında foreign key ilişkisi kurabilmek için bu tabloları bir yerde toplamamız gerekecektir.DataSet nesnesine tablolarımızı ekleyip işimizi halledebiliriz.Yazının başında global olarak oluşturduğumuz tablolar referans ismiyle DataSet nesnesini zaten oluşturmuştuk.Bunu kullanalım;
tablolar.Tables.Add(markalar); tablolar.Tables.Add(otomobiller);
Artık tablolar DataSet içinde olduğuna göre ilişki oluşturabiliriz.
Markalar tablosundaki MarkaId,Otomobiller tablosundaki OtomobilMarkaId tabloları arasında forign key ilişkisi kurulacaktır.
tablolar.Relations.Add("for_iliski",markalar.Columns["MarkaId"],otomobiller.Columns["OtomobilMarkaId"]);
DataSet’in Relations adlı koleksiyona yukarıdaki şekilde ilişkilendirmeyi yapıyoruz.
Artık DataSet sayesinde ilişkilendirilen tablolar bu DataSetin içinde olduğu için DataGrid nesnesinin DataSource özelliğine bu DataSeti bağlayabiliriz.
dataGrid1.DataSource=tablolar;
Uygulamayı çalıştırdığınızda ekranda DataGrid nesnesinde oluşturduğumuz hazır yapıyı göreceksiniz.Kullanışlılığını test edin.Şimdilik bu kadar.İyi çalışmalar.
