Bu site emekli olmuştur. Arşiv amaçlı olarak
BT AKADEMİ
sponsorluğunda yayın hayatına devam etmektedir.
Ana Sayfa
.net TV
Makaleler
Kaynak Kod
Haberler
Serbest Köşe
Canlı Köşe
Forum
C#nedir?
Ekibimiz
RSS
ADO.NET/SQL
C / Sys Prog.
Genel
Mono ve .NET
Silverlight
XML / Web Serv.
X86 Assembly
C++ / C++.NET
J#.NET / Java
.NET 3.x
UML / Analiz
Yazılım Müh.
ASP.NET
C# / VC#/.NET
Mobil Prog.
PHP 5
YAZAR HAKKINDA
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ı
:
62679
Yorum Sayısı
:
9
yorum yaz
SİTE İÇİ ARAMA
Ü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.
C#nedir? hesabınız yok mu?
Üye olabilmek için
tıklayın
.
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.
Silindi
emre TAŞ
yazının devamı >
silindi
emre TAŞ
yazının devamı >
silindi
emre TAŞ
yazının devamı >
silindi
emre TAŞ
yazının devamı >
silindi
emre TAŞ
yazının devamı >
Bende Yazmak İstiyorum
Blogroll
Turhal Temizer
Conda install environment.yml Package
26.12.2024
Turhal Temizer
Mac OS/X Removing CUDA
26.12.2024
Burak Selim Şenyurt
Rust ile ECS Yaklaşımını Anlamak
26.12.2024
Burak Selim Şenyurt
Birlikte Rust Öğrenelim Serisi
26.12.2024
Diğer Herşey
»
Makaleler RSS
»
Video Gönder
»
Makale Gönder
»
Serbest Köşeye Yazı Gönder
»
Yazar Başvurusu
»
C#nedir? Ekibinde Olmalıyım!
Sponsorlar
Ana Sayfa
/
Makaleler
/
ADO.NET/SQL
/
ADO.NET ile Veritabanlarına Bağlanma
ADO.NET ile Veritabanlarına Bağlanma
Favorilerime Ekle
Gönderiliyor lütfen bekleyin...
arkadaşıma gönder
Arkadaşınızın email adresi:
*
Mesajınız:
Ş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:
Kullanacağımız isimuzayı
System.Data.OleDb
olarak değiştirdik.
kaynak
isimli bağlantı katarımızın başına
Provider=SqlOleDb
ekledik.
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
OleDb
alt 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
Ahmet Faruk NACAROĞLU
/
üye hakkında
Bu bizim yorum yazma ekranındaki bir bugtan dolayı çıkıyor. OLE DB provider bu hatayı yakalayım bize iletiyor....
AĞU
22
2004
ibrahim kayacan
/
üye hakkında
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
Sefer Algan
/
üye hakkında
... 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
Ahmet Faruk NACAROĞLU
/
üye hakkında
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
Enver Pasa
/
üye hakkında
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
Dizayn ve Kodlama
bt
akademi
. Tüm Hakları Saklıdır © Copyright 2002-2009 c#nedir?com
Makaleler
Serbest Köşe
Makale Gönder
.Net TV
Video Gönder
Canlı Köşe
Kaynak Kod
Forum
Haberler
Röportajlar
Anketler
C# Nedir?
İletişim
Site Haritası
RSS
Favorilere Ekle
Üyelik
Hesap Aktivasyon
Ekibimiz
Ekibe Katıl