Would you like to react to this message? Create an account in a few clicks or log in to continue.



 
AnasayfaPortalliGaleriAramaLatest imagesKayıt OlGiriş yap

 

 Hızlı ADO .NET Kursu

Aşağa gitmek 
YazarMesaj
ByHeart
WebMaster
WebMaster
ByHeart


Mesaj Sayısı : 46
Kayıt tarihi : 01/01/08

Hızlı ADO .NET Kursu Empty
MesajKonu: Hızlı ADO .NET Kursu   Hızlı ADO .NET Kursu Icon_minitimeC.tesi Şub. 23, 2008 3:29 pm

Hızlı ADO.NET Kursu

MS Press tarafından yayınlanan Adım Adım ASP.NET kitabını incelerken ADO.NET kısmına geldiğimde okuduğum ilk cümle şu oldu : "ADO.NET başlı başına bir kitap konusu olmaya yetecek kadar geniş bir konudur." Fakat burda bir veritabanı programcısının temel ihtiyaçlarını rahatlıkla karşılayabilecek kavram ve yöntemleri inceleyeceğiz.

ADO, n tabanlı bir uygulamada veri katmanı ile iş katmanı arasında veri transferini sağlayan teknolojidir. .NET devrimi ile ADO da yeni özellikler kazandı.

1. ADO.NET Nesne Grubu


ADO.NET ile gelen özelliklerin en önemlisi artık veritabanı tipine özel bağlantı nesnelerinin oluşturulmasıdır. Örneğin MSSQL Server 2000 veritabanına bağlanmak için SqlConnection nesnesini kullanırız. Bu performans açısından ciddi hız kazandırmıştır. Aynı şekilde veritabanı ile işlemler yaparkende veritabanı tipine özel oluşturulmuş nesneler yardımıyla artık daha hızlı ve daha kolay hale gelmiştir.

ADO daki temel nesnelerden viri Connection idi. Hangi veritabanı olursa olsun bu nesne ile bağlantı sağlanıyordu. ADO.NET te buna karşılık SqlConnection, OracleConnection, OleDbConnection ve OdbcConnection seçeneklerimiz mevcut

ADO nun ikinci temel nesnesi Command ise ADO.NET te yine veritabanı tipine göre değişkenlik arz ederek alternatifleri ile geliyor. SqlCommand, OracleCommand, OldeDdCommand ve OdbcCommand.

ADO yu oluşturan temel nesnelerin üçüncüsü RecordSet in alternatifleri yine birden fazla nesneden oluşuyor : DataSet, DataReader ve DataAdapter.

DataSet : RecordSet in gelişmiş versiyonudur. Birden fazla tablo sorgusunu barındırabilir, aralarında ilişki kurulabilir.

DataAdapter : DataSet ile veritabanı arasında köprü vazifesi görür. Insert, Update, Delete işlemlerini DataSet içindeki değişikliklere göre uygular.

DataReader : Veritabanından okunan kayıtsetini hızlı bir şekilde sunum katmanına aktarır. Sadece ileri doğru okunur ve okunan her kayıt hafızadan silindiği için hafızada yer tutmaz ve performasnı arttırır. Salt okunurdur.

2. İş Katmanından Veritabanına Bağlanmak


1. Önce bir SqlConnection nesnesi oluşturulur.
2. Oluşturduğumuz nesnenin ConnectionString özelliğine bağlantı cümlesi atanır
3. Open() fonksiyonu ile bağlantı açılır
4. Veritabanı ile yapacağımız işemler yapılır.
5. Close() fonksiyonu ile veritabanı bağlantımız kapatılır.


Örnek : 1 SqlConnection SqlConn = new SqlConnection();
2 SqlConn.ConnectionString = "server=127.0.0.1;"
**+ "database=NorthWind;uid=sa;password=123";
3 SqlConn.Open();
4 // işlemler
5 SqlConn.Close();





3. Genel Fonksiyonlar


Veritabanı programcılarının temel işlevleri, kayıt girme, güncelleme ve silme işlemleridir. Bunun için veritabanı programcılarının ADO.NET te en çok kullanacakları nesne xxxCommand dir. ( xxx , veritabanı tipine göre değişkenlik gösterir. Örneğin; SqlCommand )

Şimdi bu nesnenin fonksiyonlarını inceleyeceğiz.

a. ExecuteNonQuery : Insert, Update, Delete gibi veritabanında değişiklik yapacak sorguların çalıştırılabileceği fonksiyondur. Geriye Sql sorgusundan etkilenen satır miktarını integer tipinde döndürür.

Örnek :

SqlConnection SqlConn = new SqlConnection();
SqlConn.ConnectionString = "server=127.0.0.1;"
*+ "database=NorthWind;uid=sa;password=123";

SqlCommand Comm = new SqlCommand();
Comm.Connection = SqlConn;
Comm.CommandType = CommandType.Text;

string CompanyName = txtCompanyName.Text;
string Phone = txtPhone.Text;
string sql = "Insert into Shippers(CompanyName,Phone)"
*+ " values(’Mutasyon Corp.’,’0212 123 45 67’)";

Comm.CommandText = sql;
***
SqlConn.Open();
Comm.ExecuteNonQuery();
SqlConn.Close();





b. ExecuteScalar : Tek bir değer döndüren sorgularda kullanılır. Örneğin "Select Count(*) Tablo1" gibi. Birden fazla satır ve sütun döndürecek bir sorgu kullanıldığında sonuç tablosunun ilk satır ve ilk sütündaki değeri döndürür.

Örnek :

SqlConnection SqlConn = new SqlConnection();
SqlConn.ConnectionString = "server=127.0.0.1;"
*+ "database=NorthWind;uid=sa;password=123";

SqlCommand Comm = new SqlCommand();
Comm.Connection = SqlConn;
Comm.CommandType = CommandType.Text;

Comm.CommandText = "Select Count(*) From Shippers";
***
SqlConn.Open();
object oReturn = Comm.ExecuteScalar();
SqlConn.Close();
*
Response.Write( oReturn.ToString() );




c. ExecuteReader :

xxxDataReader nesnesi ile birlikte kullanılır. Veri görüntülerken kullanılır. Sadece ileri ve salt okunurdur.

Örnek :

SqlConnection SqlConn = new SqlConnection();
SqlConn.ConnectionString = "server=127.0.0.1;"
*+ "database=NorthWind;uid=sa;password=123";

SqlCommand Comm = new SqlCommand();
Comm.Connection = SqlConn;
Comm.CommandType = CommandType.Text;

Comm.CommandText = "Select CompanyName,Phone From Shippers";
***
SqlConn.Open();

SqlDataReader myReader;
myReader = Comm.ExecuteReader();

Response.Write("<table>");

while(myReader.Read())
{
*Response.Write("<tr>");
*Response.Write("<td>" + myReader["CompanyName"] + "</td>");
*Response.Write("<td>" + myReader["Phone"] + "</td>");
*Response.Write("</tr>");
}

Response.Write("</table>");

SqlConn.Close();




4. Stored Procudure’lara Erişmek.


1. Önce bir SqlConnection nesnesi oluşturulur.
2. Oluşturduğumuz nesnenin ConnectionString özelliğine bağlantı cümlesi atanır
3. SqlCommand Nesnesi oluşturulur
4. Command nesnemizin Connection 1. adımda oluşturduğumuz Connection nesnesi atanır.
5. Command nesnemizin CommandType özelliğine Stored Procedure ile çalışacağımızı bildiriz
6. Command nesnesinin daha önce sql ifademizi yazdığımız Text özelliğine kullanacağımız Stored Procedure ’ün ismini yazarız.
7. Kullanacağımız Stored Procedure’ün ihtiyaç duyduğu parametre ve değerlerini gireriz
8. Connection nesnemizi açarız
9. Command Nesnemizi çalıştırırız.
10. Connection nesnemizi kaparız.


Örnek :

1*SqlConnection SqlConn = new SqlConnection();
2*SqlConn.ConnectionString = "server=127.0.0.1;"
**+ "database=NorthWind;uid=sa;password=123";
3*SqlCommand Comm = new SqlCommand();
4*Comm.Connection = SqlConn;
5*Comm.CommandType = CommandType.StoredProcedure;
6*Comm.CommandText = "NewShippers";
7*Comm.Parameters.Add("@CompanyName",CompanyName);
*Comm.Parameters.Add("@Phone",Phone);
8*SqlConn.Open();
9*Comm.ExecuteNonQuery();
10*SqlConn.Close();




5. Stored Procudure’lardan Dönen Değerlere Ulaşmak


1. Önce bir SqlConnection nesnesi oluşturulur.
2. Oluşturduğumuz nesnenin ConnectionString özelliğine bağlantı cümlesi atanır
3. SqlCommand Nesnesi oluşturulur
4. Command nesnemizin Connection 1. adımda oluşturduğumuz Connection nesnesi atanır.
5. Command nesnemizin CommandType özelliğine Stored Procedure ile çalışacağımızı bildiriz
6. Command nesnesinin daha önce sql ifademizi yazdığımız Text özelliğine kullanacağımız Stored Procedure ’ün ismini yazarız.
7. Kullanacağımız Stored Procedure’ün ihtiyaç duyduğu parametre ve değerlerini gireriz
8. Stored Procedure dan geri dönecek değeri karşılayabilecek bir SqlParameter nesnesi oluştururz.
9. Oluşturduğumuz SqlParameter nesnesinin Output tipinde olduğunu bildirirz.
10. Oluşturduğumuz SqlParameter nesnesini Command nesnesine dahil ederiz.
11. Connection nesnemizi açarız
12. Command Nesnemizi çalıştırırız.
13. Stored Proceudre dan dönen değeri karşılamak için object türünde bir değişken tanımlarız
14. 12. adımda çalıştırdığımız Stored Procedure gerekli işlemleri yaptı ve output parametresine işlem sonucu oluşan değeri atadı. Şimdi Command nesnesinin Parameters özelliğini kullanarak bu parametrenin değerini 13. adımda tanımladığımız object tipindeki değişkene atıyoruz.
15. Connection nesnemizi kaparız.
16. object tipinde değişkeni yazdırırız.


Örnek :

1*SqlConnection SqlConn = new SqlConnection();
2*SqlConn.ConnectionString = "server=127.0.0.1;"
**+ "database=NorthWind;uid=sa;password=123";
3*SqlCommand Comm = new SqlCommand();
4*Comm.Connection = SqlConn;
5*Comm.CommandType = CommandType.StoredProcedure;
6*Comm.CommandText = "GetShipperCompanyName";
7*Comm.Parameters.Add("@ShipperID",ShipperID);
8*SqlParameter myParam = new SqlParameter("@CompanyName",
**SqlDbType.NVarChar,40);
9*myParam.Direction = ParameterDirection.Output;
10*Comm.Parameters.Add(myParam);
11*SqlConn.Open();
12*Comm.ExecuteNonQuery();
13*object oReturn;
14*oReturn = Comm.Parameters["@CompanyName"].Value;
15*SqlConn.Close();
16*Response.Write(oReturn.ToString() );




6. İş Katmanında Transaction


1. Önce bir SqlConnection nesnesi oluşturulur.
2. Oluşturduğumuz nesnenin ConnectionString özelliğine bağlantı cümlesi atanır
3. SqlCommand Nesnesi oluşturulur
4. Command nesnemizin Connection 1. adımda oluşturduğumuz Connection nesnesi atanır.
5. Command nesnemizin CommandType özelliğine Stored Procedure ile çalışacağımızı bildiriz
6. Command nesnesinin daha önce sql ifademizi yazdığımız Text özelliğine kullanacağımız Stored Procedure ’ün ismini yazarız.
7. Kullanacağımız Stored Procedure’ün ihtiyaç duyduğu parametre ve değerlerini gireriz
8. Connection nesnemizi açarız
9. SqlTransaction tipinde bir nesne oluştururuz. Bunuda Connection nesnemizin BeginTransaction() foknsiyonu yardımıyla yaparız.
10. Command nesnemizin Transaction özelliğine 9. adımda oluşturduğumuz SqlTransaction nesnesini atarız.
11. bir try-catch bloğu başlatırız. İşlemlerimiz sırasında hata ile karşılaşırsak catch bloğunda yaptığımız işemleri geri alacağız.
12. Command nesnemizin ExecuteNonQuery fonksiyonunu kullanarak veritabanı işlemlerini başlatıyoruz. Veritabanı ile ilgişi işlemler sırasında bir hata ile karşılaşılmadı ise program normal akışı itirabiyle alt satıra geçecek. Bir problemle karşılaşılması halinde ise catch bloğuna atlayacak.
13. Bu adıma geçildiyse eğer veritabanı işlemleri başarıyla tamamlanmış demektir. Ancak henüz veritabanımızda herhangi bir değişiklik yapılmadı. SqlTransactipn nesnemizin Commit() fonksiyonu ile bu değişikliklere onay veriyoruz ve işlemimiz geçerli kılınıyor. Programımız bu adımdan sonra catch bloğunu atlayarak devam edecektir.
14. try bloğunda bir problem çıkması halinde otomatikmen catch bloğunda ki komutlar uygulanmaya başlar.
15. Veritabanı ile yapmak istediğimiz işlemler sırasında bir problem çıktığı için yapılan değişiklikleri SqlTransaction nesnesinin Rollback() fonksiyonu ile geri alıyoruz.
16. Connection nesnemizi kaparız.


Örnek :

1*SqlConnection SqlConn = new SqlConnection();
2*SqlConn.ConnectionString = "server=127.0.0.1;"
**+ "database=NorthWind;uid=sa;password=123";
3*SqlCommand Comm = new SqlCommand();
4*Comm.Connection = SqlConn;
5*Comm.CommandType = CommandType.StoredProcedure;
6*Comm.CommandText = "UpdateCity";
7*Comm.Parameters.Add("@Name",Name);
*Comm.Parameters.Add("@uCityID",CuityID);
8*SqlConn.Open();
9*SqlTransaction myTransaction = SqlConn.BeginTransaction();
10*Comm.Transaction = myTransaction;
11*try {
12**Comm.ExecuteNonQuery();
13**myTransaction.Commit();
**}
14*catch {
15**myTransaction.Rollback();
**}
16*SqlConn.Close();

Selçuk Yavuz tarafından yazılmıştır
Sayfa başına dön Aşağa gitmek
 
Hızlı ADO .NET Kursu
Sayfa başına dön 
1 sayfadaki 1 sayfası

Bu forumun müsaadesi var:Bu forumdaki mesajlara cevap veremezsiniz
 :: CatirCatir Web :: Programlama-
Buraya geçin: