Bu site emekli olmuştur. Arşiv amaçlı olarak BT AKADEMİ sponsorluğunda yayın hayatına devam etmektedir.




C#nedir?com
 
YAZAR HAKKINDA
Ahmet Faruk Nacaroğlu
Ahmet Faruk Nacaroğlu
http://www.csharpnedir.com/
İletişme geçmek için tıklayın.
40 Makalesi yayınlanmakta.
Yazar hakkında detaylı bilgi için tıklayın.
Yayınlanan diğer makaleleri için tıklayın.
İlgili etiketler:  ADO.NET/SQL Ahmet Faruk Nacaroğlu
 
YAZI HAKKINDA
Türü : Makale
Serbest Köşede C#nedir?com üyelerinin hazırladıkları yazılar yayınlanır. Bu yazılar editör incelemesine girmeden yayınlanır.
Seviyesi : Başlangıç
Kategori : ADO.NET/SQL
Yayınlanma Tarihi : 26.12.2002
Okunma Sayısı : 61003
Yorum Sayısı : 9     yorum yaz
Site İçi AramaSİTE İÇİ ARAMA
Üye Girişini AçÜye GİRİŞİ
Üye girişi için tıklayın.
Kullanıcı Adı
Şifre
 
Beni her zaman hatırla
Bir hafta boyunca kullanıcı bilgilerinizi kullanıcı çıkışı yapana kadar hatırlar. (Paylaşılan bilgisayarlarda önerilmez.)
 
Şifremi / Kullanıcı Adımı unuttum.
 
.net TV RSS Serbest KÖŞE (?)
Serbest Köşede C#nedir?com üyelerinin hazırladıkları yazılar yayınlanır. Bu yazılar editör incelemesine girmeden yayınlanır.
emre TAŞ
Silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
Makale Gönder Bende Yazmak İstiyorum
.net TV RSSBlogroll
Turhal Temizer
Conda install environment.yml Package 19.4.2024
Turhal Temizer
Mac OS/X Removing CUDA 19.4.2024
Burak Selim Şenyurt
Kurumsal Yazılımcının Oyun Geliştirme ile İmtihanı 19.4.2024
Burak Selim Şenyurt
Matematik ve Oyun Programlama - Missile Command - Final 19.4.2024
  Diğer Herşey
Sponsorlar
BT Akademi
Medya Portakal
Video Hosting Sponsoru
Csharpnedir.com bir Ineta üyesidir
Uzman Abi
Her Yönüyle C# - Sefer Algan
ADO.NET ile Veritabanlarına Bağlanma
 
Kapat
Sayfayı Yazdır Sık Kullanılanlara Ekle Arkadaşıma Gönder MySpace Del.Ico.Us Digg Facebook Google Mixx Reddit StumbleUpon
Şimdiye kadar geliştirilen profesyonel yazılımların hemen hepsinde bir şekilde dosyalarda veya bir veritabanında saklanmış veriye erişim ve bu veriyi kullanmak gerekmiştir. Microsoft.NET ile geliştirilen uygulamarın büyük bir kısmında veriye ihityacımızın olacağını da tartışmak pek mümkün değildir. Bu bağlamda, geleceğin programlama platformu olan Microsoft.NET verilere erişimi ve bu veriler üzerinde işlemler yapmayı çok kolay hale getiren ADO.NET'i de geliştirmiştir. ADO.NET'e giriş amaçlı olarak şu makalemizi okumanızı tavsiye ederim.

ADO.NET ile SQL Server'a SqlClient sınıfı ile veya OleDb provider ile bağlanabiliriz. Access veritabanımıza ise hızlı bir biçimde bağlanmak için yine OleDb provider'ı kullanmamız mümkün. Bunların yanında .NET XLM verilerine de erişim konusunda geniş sınıf kütüphanlerine sahip olduğunu belirtmekte yarar vardır. ADO.NET ile çalışmaya başlamadan önce isterseniz veritabanlarımıza nasıl bağlanırız bir görelim. Böylelikle verilere değişik şekilde ulaşmayı başararak programlarımızda daha esnek ve etkili olabiliriz.

Yazımızın kalan kısmında sırası ile SQL sunucumuzda bulunan bir veritabanımıza önce SqlClient sonra OleDb sağlayıcısı ile bağlancağız. Access veritabanımıza ise tabi ki OleDb sağlayıcısını kullanarak bağlanmayı hedefliyoruz.

using System;
using System.Data.SqlClient;

public class SqlClientOrnegi
{
    public static void Main()
      {
            // bağlantıya geçmeyi düşündüğümüz veritabanımızın bulunduğu sunucu ismi,
            // sunucuda geçerli bir kullanıcı ismi, şifresi ve veritabanımızın ismini karakter katarı olarak yazıyoruz.
          stringkaynak="server=yakmoz000;uid=sa; database=Northwind;";   

          // Bağlantı nesnemizi baglanti ismi ile oluşturalım
          SqlConnection baglanti = new SqlConnection(kaynak);

          // bağlantı nesnemizin Open() metodunu kullanarak bağlantımızı açalım.
          baglanti.Open();

          // Bağlantımız açtığımızı garantilemek için araya bir mesaj yazalım.
          Console.WriteLine("Başarı ile SQL servere bağlandık. ");

          // Veritabanı kritik bir kaynak olduğu için işimiz bitince hemen kapatalım.
          baglanti.Close();

          Console.ReadLine();
       }
}

Yukarıdaki programı incelersek; ADO.NET ile SQL Server veritabanı sunucumuza bağlanmamızın ne kadar kolay olduğunu görebiliriz. Öncelikle SQL sunucu ile işlemler için System.Data isim uzayının (namespace); System.Data.Sqlclient alt isim uzayını kodumuzun en başına eklememiz gerekir. Bu isim uzayı SQL sunucu ile olan işlerleri sağlamamıza yarayan nesneleri ve metodları içerir. Bağlantıyı kurmak için; bağlantı kuracağımız veritabanı sunucumuzun ismini server=yakamoz000 olarak (benim sunucumun ismi yakamoz00'dı sizinki başka olacaktır tabii) verdik, sunucuda tanımlanmış bir kullanıcı ismi de vermemiz gerekir ki bunu uid=sa (sa aslında serveradmin - sunucu yöneticisi) seçtik. Enson bağlamayı istediğimiz veri tabanımızın ismini database=northwind(klasik olarak northwind, çünkü her sunucuda varsayılan olarak kurulur) ekliyoruz. Bağlantı için, bağlantı nesnemizi (connection obejct) oluşturmamız gerekir. Bağlantı nesnemizin ismini baglanti şeklinde seçmemiz bizim için ileride daha kolay hatırlamamızı sağlayacağını umarım. Artık bağlantı nesnemiz elimizde olduğuna göre bağlantımızı yapabiliriz. Bunun için nesnemizin Open() metodunu kullanıyoruz. Bağlantıyı açtığımızı bize bildirmesi için bir de konsola bağlantıyı açtık şeklinde bir uyarı yazdırıyoruz. Bağlantımızı sorunsuz bir biçimde açtıktan sonra burada istediğimiz işlemleri yapabiliriz. Veritabanımız ile işlerimiz bittikten sonra, kritik olan bu kaynağı serbest bırakmamız gerekiyor. Close() metodu ile bağlantıyı kapatabiliriz.

Bir sonraki inceleyeceğimiz bağlantı türü SQL sunucuya OleDb sağlayıcısı ile bağlanmak olacak. Aşağıdaki kodu dikkatlice incelersek SQL sunucuya SqlClient veya OleDb metodlarından biriyle bağlanma arasında çok bir fark olmadığını görürüz. Farklara gelince:
  1. Kullanacağımız isimuzayı System.Data.OleDb olarak değiştirdik.
  2. kaynak isimli bağlantı katarımızın başına Provider=SqlOleDb ekledik.
  3. SqlConnection yerine OleDbConnection yazdık.
Geriye kalan herşey aynı; bu da yazımın baş taraflarında belirttiğim esnekliği ve gücü programcıya ADO.NET'in nasıl sunduğunun kanıtıdır kanaatindeyim. Hemen aklınıza şu soru gelebilir:"İyi de SQL veritabanı sunucusu ile çalışırken SqlClient alt isim uzayının metodları ile çalışabileceğimize göre neden aynı sunucuyla OleDbalt isim uzayı ile de erişime ihtiyaç duyarız?" Bu sorunun birinci cevabı b>SqlClient alt isim uzayı SQL sunucusu için optimize edilmiş olmasıdır. Diğerlerinden biri de öyle bir projede çalışmak zorunda kalırız ki aynı anda hem SQL sunucuya hem de Access ve/veya diğer bir OLEDB destekli veritabanı ile işlerimiz olur. Bu durumda OleDb provider için yazdığımız ve programımıza özgü kodları SQL sunucu ile olan kısmı için ayrı bir kod yazmak zahmetli olabilir.

using System;
using System.Data.OleDb;

public class SqlOleOrnegi
{
    public static void Main()
      {
            // bağlantıya geçmeyi düşündüğümüz veritabanımızın bulunduğu sunucu ismi,
            // sunucuda geçerli bir kullanıcı ismi, şifresi ve veritabanımızın ismini karakter katarı olarak yazıyoruz.
          string kaynak="Provider= SqlOleDb;server=yakamoz;uid=sa; database=northwind;";

          // Bağlantı nesnemizi baglanti ismi ile oluşturalım
          OleDbConnection baglanti = new OleDbConnection(kaynak);

          // bağlantı nesnemizin Open() metodunu kullanarak bağlantımızı açalım.
          baglanti.Open();

          // Bağlantımız açtığımızı garantilemek için araya bir mesaj yazalım.
          Console.WriteLine("Başarı ile OleDb kullanarak SQL servere bağlandık.");

          // Veritabanı kritik bir kaynak olduğu için işimiz bitince hemen kapatalım.
          baglanti.Close();

          Console.ReadLine();
       }
}

Şimdi isterseniz Access veritabanımıza OleDb sağlayıcısı ile bağlanalım. Aşağıda bulunan kodu dikkatlice inceler ve bir üstteki  kod ile karşılaştırırsak gerçekten hayatımızın ne kadar kolaylaştığını göreceğiz. Evet tek fark bağlantı karakter katarı. Bu katar ( kaynak ) iki tane parametreleri içeriyor. Birincisi bağlantıyı hangi sağlayıcı (provider) ile yapacağımızın bildirgesi. Diğeri ise veritabanımızın ismi ve yeri (örnekte veri tabanı program kodu ile aynı dizinde olduğu varsayılıyor!).

using System;
using System.Data.OleDb;

public class AccessOleDbOrnegi
{
    public static void Main()
      {
            // bağlantıya geçmeyi düşündüğümüz veritabanımıza bağlantıyı sağlayan provider
            // ve veritabanımızın ismini ve yeri.
          string kaynak="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=db1.mdb";

          // Bağlantı nesnemizi baglanti ismi ile oluşturalım
          OleDbConnection baglanti = new OleDbConnection(kaynak);

          // bağlantı nesnemizin Open() metodunu kullanarak bağlantımızı açalım.
          baglanti.Open();

          // Bağlantımızı açtığımızı garantilemek için araya bir mesaj yazalım.
          Console.WriteLine("Başarı ile OleDb kullanarak SQL servere bağlandık.");

          // Veritabanı kritik bir kaynak olduğu için işimiz bitince hemen kapatalım.
          baglanti.Close();

          Console.ReadLine();
       }
}

ADo.NET ile programlamaya giriş mahiyetinde şimdilik sadece bağlantıları nasıl kuracağımızı öğrendik. Bunun yanında ADO.NET ile programlamaya başlarken bile bize sağladığı avantajları hemen hissettik. İlerleyen yazılarımızda ADO.NET programlama konusunda değişik başlıklar üzerinde daha derinlemesine durmayı düşünüyorum.

Makale:
ADO.NET ile Veritabanlarına Bağlanma ADO.NET ve SQL Ahmet Faruk Nacaroğlu
  • Yazılan Yorumlar
  • Yorum Yaz
AĞU
22
2004
Bu bizim yorum yazma ekranındaki bir bugtan dolayı çıkıyor. OLE DB provider bu hatayı yakalayım bize iletiyor....
AĞU
22
2004
Microsoft OLE DB Provider for ODBC Drivers error 80004005 [Microsoft][ODBC Microsoft Access Driver] Field makale_yorumlar.Yorum cannot be a zero-length string. /yorum_ekle.asp, line 23 bu nedir acaba açıklarsanız sevinirim :)
OCA
8
2003
... bir sınıfın nasıl kullanılacağını anlatan yapılar bunlar..bunlar msdn de böyle ingilizce kitaplarda da böyle türkçe kitaplarda da.. bu yapılar farklı şekilde nasıl yazılır acaba? bir fikriniz varsa bizimle paylaşırmısınz ..
OCA
8
2003
Hangi makaleden? sepecific olarak? zaten ingilizce bu şekilde yüzlerce makale var. Hepsinin de kodu aynı olmak zorunda... Bu konu çook temel ve kod çook basit olmalı..
OCA
7
2003
dostum bu makeleler cogu kopya hepsi bir yerden(ingilizcem makaleden) araklanmis..En azindan kaynak kodlar öyle..
Sayfalar : 1 
Yorum yazabilmek için üye girişi yapmalısınız. Üye girişi için tıklayın.
Üye değilseniz Üyel Ol linkine tıklayarak üyeliğinizi hemen başlatabilirisniz.
 
  • Bu Konuda Son 10
  • Eklenen Son 10
  • Bu Konuda Geçmiş 10
Bu Konuda Yazılmış Yazılmış 10 Makale Yükleniyor
Son Eklenen 10 Makale Yükleniyor
Bu Konuda Yazılmış Geçmiş Makaleler Yükleniyor