ADO - Connection (Bölüm 2)
Bu yazıyı okumadan önce http://www.findikkurdu.com/Article.aspx?ID=49 yazısını
okduğunuzdan emin olunuz.
Önceki yazımızda ADO´ya giriş yapmıştık ve bu yazımızda "Connection"
nesnesine giriş yapıcağımızı belirtmiştik.
"Connection" nesnesi bizi veritabanımıza bağlayan
nesnedir. Ayrıca veritabanı üzerinde yapacağımız bir takım işlemleri de
"Connection" nesnesi üzerinden götüreceğiz.
Öncelikle bir "Connection" nesnesi
oluşturacağız;
KOD:
<% SET objConn =
Server.CreateObject("ADODB.Connection") %>
Yazılarımızda kullanım sıramızı dikkate aldığımız için öncelikle
veritabanımıza bağlanmamız gerekiyor. Veritabanımıza bağlanmamız için bir
"ConnectionString" (bağlantı cümleciği)oluşturmamız gerekiyor.
Bağlantı cümleciği "Connection" nesnemize hangi türdeki
veritabanına, hangi arayüzü ve hangi ayarları kullanarak bağlanacağını
belirtmemizi sağlar. Yani bu da demek oluyor ki her veritabanı türünün
bağlantı cümleciği farklıdır. Hatta aynı veritabanı türünün birden
çok bağlantı cümleciği bile olabilir.
ODBC için
DSN ve DSN-Less bağlantı cümleciklerimiz
vardır. Bu şu anlama geliyor bağlantı adı kullanarak
veritabanına bağlanmak veya veritabanı adresi kullanarak veritabanına
bağlanmak (DSN-Less).
Ancak ODBC´nin eski bir
teknoloji olduğunu vurgulamakta yarar var. Çünkü artık OLE DB
var. Veritabanımıza OLE DB kullanarak bağlanmaya
tercih ediniz.
Sık kullanacağınız iki bağlantı cümleciğini ele
alalım;
Access;
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:veritabani.mdb;" SQL
Server; "Provider=sqloledb;Data
Source=SunucuAdresi;Initial Catalog=VeritabaniAdi;User
Id=KullaniciAdi;Password=Sifre;"
Ayrıca diğer bağlantı cümlecikleri için
kesinlikle http://www.connectionstrings.com adresini öneririm.
Ayrıca kişisel tavsiyem bu cümlecikleri ezberlemeye çalışmayın çünkü tamamen
zaman kaybı olucaktır. Elinizin altında bir yere kaydedin ve yeri geldiğinde
ordan bakın.
Şimdi veritabanımıza bağlanmanın zamanı gelmiştir;
KOD:
<% SET objConn =
Server.CreateObject("ADODB.Connection") objConn.Open
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" &
Server.MapPath("veritabani.mdb") %>
Bu kod şu işlemleri yapmaktadır; 1.
Veritabanı bağlantı nesnemizi oluşturduk. 2.
Veritabanı bağlantı nesnemize "Microsft Jet OLEDB 4.0"
arayüzünü kullanarak veritabani.mdb dosyasına bağlanmasını söyledik.
"Connection String" belirmek için bir diğer yöntem ise
"ConnectionString" "property" sini kullanmaktır.
KOD:
<% SET objConn =
Server.CreateObject("ADODB.Connection") objConn.ConnectionString =
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" &
Server.MapPath("veritabani.mdb") objConn.Open %>
Ne farkı var diye sorarsanız hiç bir farkı yok. İstediğinizi
kullanabilirsiniz. Artık veritabanımıza bağlandığımıza göre veritabanında
işlemler yapmaya başlayabiliriz. Veritabanında işlemler yapmak için SQL
(Structed Query Language) isimli sorgu dilini kullanmaktayız. Bu
veri dilinin bazı temel komutları vardır ve bu komutlar hemen hemen tüm
veritabanı türlerinde aynıdır. (SELECT, UPDATE, DELETE, INSERT gibi) Ancak bazı
ufak farklılıklar ileri düzey kullanımlarda ortaya çıkacaktır. (Şimdi
onlara değinerek kafanızı karıştırmak istemiyorum.) Yazımızın başında
da söylediğimiz gibi yazımız tamamen ADO ile ilgilidir ve bu
nedenle SQL´e değinmeyeceğim. Ayrıca SQL´i
SQL Server ile karıştırmayınız. SQL vakti
zamanında IBM tarafından üretilmiş bir sorgulama dilidir. Ancak SQL
Server, Microsoft tarafından üretilmiş bir veritabanı sunucusudur.
ADO´da veritabanımızı sorgulamak için "Execute" metodunu
kullanırız.
KOD:
<% SET objConn =
Server.CreateObject("ADODB.Connection") objConn.ConnectionString =
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" &
Server.MapPath("veritabani.mdb") objConn.Open objConn.Execute "INSERT
INTO tblVeriler (fldVeri) VALUES (´Merhaba Dünya:P´);" %>
Bu kod veritabanındaki "tblVeriler" tablosuna veri
eklememizi sağladı.
Düzenli programcılar olarak; veritabanı ile işimiz bittiğinde bağlantımızı
kapatmamız gerekiyor:) İşte bu iş için "Close" metodunu
kullanmaktayız. Ayrıca nesnemizi hafızadan temizlememiz de performans artışı
sağlayacaktır.
KOD:
<% SET objConn =
Server.CreateObject("ADODB.Connection") objConn.ConnectionString =
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" &
Server.MapPath("veritabani.mdb") objConn.Open objConn.Execute "INSERT
INTO tblVeriler (fldVeri) VALUES (´Merhaba Dünya:P´);" objConn.Close SET
objConn = Nothing %>
"Connection" nesnesi ile yapabileceğimiz temel işlemler
bunlar. Bu yazının devamı ileri-düzey konuları ve detay kısmını ele
almaktadır.
"Connection" nesnesi bize bağlandığımız veritabanının
"schema"´sını (şema) almamızı sağlar. Şema derken,
veritabanındaki tablo ve alanların (field) listesini kastediyoruz.
"OpenSchema" bize bir "RecordSet" döndürüyor.
"OpenSchema" metodunun bir adet parametresi bulunmaktadır. Bu
parametre şema türünü belirtmeye yaramaktadır. Toplamda 46 adet şema türü
olmasına rağmen OLE DB sadece 3 adetini desteklemektedir.
Biz ise genel olarak iki tanesini kullanacağız. Üçüncüsüne hiç değinmeyeceğiz
bile.
İlk kullanacağımız şema türü "adSchemaTables" değeri ise "20" dir. Bize
tablonun ismi ve türünü döner. (Türü derken kullanıcı tarafından mı yaratıldığı
yoksa veritabanın sisteminde varolan bir tablo mu olduğu) Bu şema türünde
"TABLE_NAME" ve "TABLE_TYPE" alanları
döner.
İkinci kullanacağımız şema türü ise "adSchemaColumns"
değeri ise "4" dür. Bize sütunların ismini ve hangi tabloya ait
olduğunu döner. Bu şema türünde "TABLE_NAME" ve
"COLUMN_NAME" alanları döner.
KOD:
<% SET objConn =
Server.CreateObject("ADODB.Connection") objConn.ConnectionString =
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" &
Server.MapPath("veritabani.mdb") objConn.Open SET objRS =
objConn.OpenSchema(4) objConn.Close SET objConn =
Nothing %>
Geri kalan işlemler "RecordSet" ile ilgili olduğu için bu
konuyu burada bırakacağım. Ancak eğer diğer şema trlerini görme
istiyorsanız;
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/ado270/htm/mdcstschemaenum.asp
"Connection" nesnesinin bir "property"si
ise "State"´dir. Bağlantımızın ne durumda olduğunu bu özellik
yardımıyla öğreniyoruz. Bu özellik bize şu değerleri döner;
Bağlı Değil =
0 Bağlı =
1 Bağlanıyor = 2
KOD:
<% SET objConn =
Server.CreateObject("ADODB.Connection") objConn.ConnectionString =
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" &
Server.MapPath("veritabani.mdb") objConn.Open
IF objConn.State = 1
THEN objConn.Close ´ Bağlı ise bağlantıyı kesmesini
söylüyoruz. SET objConn = Nothing %>
"CursorLocation" "property" si ise
kayıtlarımızın nerede işleneceğini belirler. İki türü vardır "Client" ve
"Server".
"Client" olarak belirlendiğinde veritabanı sunucumuz
verileri OLE DB, ODBC ile istemciye gönderir. Veriler istemcinin sanal
hafızasında saklanır ve istemci kendi ihtiyacı olanları kullanır.
"Server" olarak belirlendiğinde ise veriler, veritabanı
sunucumuzun "Temp" alanında tutulur ve istemciye sadece
ihtiyacı olan veriler gönderilir.
"CursorLocation" değeri varsayılan olarak
"Server" modundadır ve değiştirmeye de pek gerek yoktur.
"Server" moduna almak için "2", "Client"
moduna almak için ise "3" değerini kullanacağız.
"Connection" nesnesi ile ilgili olarak bilmeniz gereken
birşey ise "native command" ve "native stored
procedure" desteğidir. Yani SQL Server kullanırken bir "Stored
Procedure"yi kullanmak için aşağıdaki yöntemi
kullanabiliriz;
KOD:
<% ´Veritabanımızda KullaniciEkle adlı bir SP olduğunu
varsayalım SET objConn =
Server.CreateObject("ADODB.Connection") objConn.ConnectionString =
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" &
Server.MapPath("veritabani.mdb") objConn.Open objConn.KullaniciEkle
"FiNaRFiN", "Can HANHAN" objConn.Close SET objConn =
Nothing %>
Bu yöntemde "Connection" nesnesi parametre türünü kendi
belirleyecektir. Bu da bize büyük bir kullanım kolaylığı ve kodlarımız açısından
da güzellik sağlamaktadır. Ancak bu kullanım .Net´de problem
çıkartmaktadır ve kullanılmaması gerekmektedir.
"Connection" nesnemizi ilgilendiren bir diğer konu ise
"transaction" konusudur. Bu konuda anlatacağımız şeyler
ilerideki konularımızla çakışacağı için yazı dizimizin sonuna ayrıca bir
"ADO ve Transaction" makalesi ekleyeceğiz.
(Findikkurdu.com)
|