DataAdapter kullanimi

Bu yazida, DataAdapter sinifini kullanarak veri isleme konusunu isleyecegiz.

DataAdapter sinifi, ADO.NET'te oldukça sik kullanilan çok güçlü bir siniftir. Çevrimdisi (offline, baglantisiz) baglanti saglar ve serverdan clienta (select), clienttan servera (update, delete, insert) komutlarini çok rahat ve toplu halde isletilmesini saglayan metotlara sahiptir. 

Biz DataAdapter sinifini, DataTable veya DataSetler ile beraber kullaniriz.

Bir DataAdapter nesnesi, mutlaka select sorgusu içermelidir. Select sorgusu ile ortaya çikan veri kümesi ise DataTable veya DataSet nesnelerine aktarilir.

DataTable veya DataSet üzerinde meydana getirilen degisiklikler, veritabanina etki yapmaz. Nedeni ise, veri kümesini çektikten sonra veritabani baglantisinin kapatilmasi ve bundan sonraki islemlerin çevrimdisi gerçeklestirilmesidir.

Yaptigimiz degisikliklerin veritabanina aktarilmasini istiyorsak, DataAdapter nesnesinin SelectCommand bilgisine bakarak, DeleteCommand, UpdateCommand ve InsertCommand bilgilerinin otomatik olarak olusturulmasini saglayan CommandBuilder'i kullanabiliriz.

data adapter 

ADO.NET siniflarini kullanabilmemiz için namespace'imizi tanimliyoruz.

// SQL e baglanti için gerekiyor
using System.Data.SqlClient; 

Veritabanindan verilerin çekilip Gridviewa aktarilmasina örnek:

// Connection String olusturuyoruz.
string sqlConn = "server=localhost; database=Veritabani; trusted_connection=true;";
// Connection nesnesini olusturuyoruz.
SqlConnection conn = new SqlConnection(sqlConn);

// SQL cümlecigi ile select ifadesini veriyoruz.
string cmdText = "select * from tabloadi where kosul order by Alanadi";
// Command nesnesini olusturuyoruz.
// 2 bilgiye ihtiyaç var. 1- SQL stringi, 2-Connection nesnesi
SqlCommand cmd = new SqlCommand(cmdText, conn);

// Command nesnesini kullanarak adaptörümüzü olusturuyoruz.
DataAdapter da = new DataAdapter(cmd);
// bilgi tasiyicisi olarak datatable veya dataset e ihtiyacimiz var
DataTable dt = new DataTable();

// bilgileri datatable adaptör araciligi ile aktariyoruz.
// adaptör, connection nesnemizi bizim yerimize açar ve kapatir.
da.Fill(dt);

// bu noktada artik veritabani baglantimiz kapatilmis durumda.
// veriyi gridviewa bagliyoruz.
Gridview1.DataSource = dt;
Gridview1.DataBind();

DataAdapter ün güçlü bir sinif oldugunu söylemistim. Istersek hiç connection ve command nesnelerini olusturmadan sadece connection string ve select sorgusu bilgilerini vererek de adaptörden bilgi çekebiliriz.

string sqlConn = "server=localhost; database=Veritabani; trusted_connection=true;";
string cmdText = "select * from tabloadi where kosul order by Alanadi";

// Connection ve command olusturmuyoruz.
// adaptörün kendisi bu nesneleri bizim yerimize olusturuyor.
DataAdapter da = new DataAdapter(cmdText, sqlConn);

DataTable dt = new DataTable();

da.Fill(dt);

Örnek uygulamamiz SQL Server üzerinde çalismaktadir.