1.4. VERİ TABANINA ERİŞİM BİLEŞENİ
İntrenette veya şirketlerin intranetlerinde ASP Yöntemi, içeriği her zaman güncelleştirirken aynı zamanda sitenin bakımı ve onarımı ile ilgili maliyetlerin de azalmasını sağlar.
WindowsNT ve Internet Information Server altında bu genellikle Internet Database Connector adı verilen bir teknoloji ile başarıyla yapılandırılmıştır; ancak, bu teknolojinin de sınırlandırmaları vardır.
Aktif Sunucu Sayfaları bunların hepsini çözümler. Bu da veri tabanına erişim bileşenleri tarafından sağlanır. Veri tabanına erişim bileşenleri sayesinde bütün aktif veri nesneleri (ADO) yani web sayfaları arasındaki eksik bağ ve depolanmış bilgi elde edilir.
ActiveX veri nesneleri, bütün bilgilere erişimi sağlayan bir bağlantı mekanızmasıdır. En çok kullanılan biçimi, ilişkilendirilmiş bir veritabanına bağlantı sağlamak içindir. ASP’lerin içeriği bir veri tabanıyla uyumlu VBScript veya JScript ile yazmaya uygundur. ASP’nin esnekliği ile, ADO bize internet üzerinde kullanıcı-sunucu arasındaki işlemleri yaratmaya izin verir.
ADO, ilişkilendirilmiş açık veri tabanı bağlantısından (ODBC), veri tabanlarına erişimi sağlar. Hangi ODBC sürücüsü uygunsa o bilgi kaynağı için kullanılabilir. Sadece özel veri tabanı olan uygulamalarda (SQL, ORACLE, Access v.b) değil ayrıca excel gibi kayıtlarda veya metin içerikli dosyalarda da kullanılabilir.
ADO aslında OLE DB adlı bir teknoloji üzerine kurulmasına rağmen içerdiği metod ve özellikleriyle oldukça kullnaışlı bir bilgi arabirimi sağlar.
VERİ SAĞLAYICI
ADO başka bir katmnanın üzerine (OLE DB) inşa edildiği için, veri ile bağlantıyı sağlayacak bir diğer katmana ihtiyaç duyar .Başka bir deyişle, sadece sürücü yazılımını düşünüp (ömeğin ODBC), verinin gerçek sağlayıcısının ne olduğunu ele almamız gereklidir. ODBC en çok kullanılan OLE DB kaynağıdır. Şekillendirilrniş haline de MSDASQL diyebiliriz

ADO'nun kapasitesi OLE DB kaynağının kapasitesine göre değişir. Bazı nesneler değişik çalışır özellikleri eksik olabilir veya zorunlu nesneler yoktur veya kullanılamazlar. çoğu ODBC sürücüsü ADO'nun kullandığı imleç tiplerini sağlamazlar ama buna rağmen imleç çeşitleri ile ODBC imleç çeşitlerini kanştırmayılliz. ODBC kaynağını kullanan ADO ODBC imleçlerini kullanmaz. Kendi imleçlerini kullanır.
1.4.1. ADO NESNE MODELİ
ADO, çoğunlukla Microsoft Access'de ve diğer nesne tabanlı uygulamalarda içerilen veri tabanı erişimini sağlayan bir mekanizmadır . Örneğin, hiyerarşisinde 3 temel nesne bulunur. Bağlantı (connection), kayıt kümesi (recordset) ve komut (command) ve birkaç yardımcı nesne kolleksiyonu, parametreler, nesneler ve hatalardır.

Connection nesnesiyle aktif bir bağlantı kurabiliriz. Bu bağlantı genellikle veri tabanı dışında bir yerde saklanmış bir dataya erişimi sağlar. Bilgi kaynağından kayıtları elde etmek için SQL dizini çalıştırılır veya bilgi doğrudan ele alınır. Bu gibi işler için Command nesnesini kullanırız. Kayıt kümesi nesnesi çalıştırılmış SQL dizininde dönen dataya veya depolanmış bir prosedüre veya açılan bir tabloya erişimi sağlar.
Bağlantı nesnesi hata nesneleri koleksiyonu içerir. Kayıt kümesi nesnesi olan koleksiyonunu barındırır. Bu koleksiyonun her üyesi alanlar hakkında bilgiler içeren kayıt kümesinin içinde bulunan alan nesneleridir.
ADO daha basit bir nesne hiyerarşisine sahip olmasına rağmen çoğu veri tabanı uygulamalarından daha rahattır .Bağlantı nesnesi şemanın en üstünde yer alsa da kayıt kümesi yaratırken bunu kullanamayız. Ama, aslında nesneler kendi kendine hiyerarşiyi izlemeden kullanılabilir. Bu bölümde biraz sonralan anlatılacaktır. Şimdi bilginin işlenişi ve kullanışı ve bilgi kaynağına nasıl bağlanılacağına bakalım. Önce ana nesneye bakalım.
1.4.2. CONNECTION-BAĞLANTI NESNESI
Bir veri tabanına bağlantıyı tanımlamak doğrudan yapılan bir işlemdir. İlk adım, bağlantı nesnesine bir örnek oluşturmaktır .Aşağıda, veri kaynağına erişimi sağlayan bir bağlantı ömeği görülmektedir.
Set VTBag=Server.CreateObject(“ADODB.Connection”)
Sunucu nesnesinin CreateObject metodunu kullanarak yeni oluşturulan bir bağlantı nesnesine gönderilmek üzere tutulmuş bir değişken o an elde edilir.
Server.CreateObject deyimini, ya Session_onStart Application_onStart rutinlerini global.asa dosyasına ekleyerek kullanılabilir veya <OBJECT> etiketini tercih edebilirsiniz.
Sub Application_onStart {)
Set VTBag=Server .CreateObject(" ADODB.Connection'')
Set Application (''VTBag'')=VTBag
End Sub
Veya
<OBJECT RUNAT=Server Scope=Application ID=VTBag Prog ID=“ADODB.connection”>
</OBJECT>
Sub Application_on Start ()
Set Application ("VTBag'')=VTBag
End Sub
ODBC'nin 3.0 versiyonunda connecting pooling denen ve bağlantının birden çok kullanıcıya kontrolünü sağlayan bir özellik vardır. Connecting pooling-bağlantı havuzlama özelliğini kullanmanın en iyi yolu veritabanı bağlantısını, kullanıldığı her sayfada açıp kapamaktır. Bu ODBC'nin bağlantılan en etkili sekilde kontrolüdür
1.4.3. CONNECTION NESNESİ METOD VE ÖZELLİKLERİ
Bağlantı nesnesi bize onunla çalışmamız için metod ve özellikler sağlar.
Bu 3 gruba ayrılır. Bağlantıyı açıp kapama, bağlantı ileilgili bir bilgi kaynağındaki komutun çalıştırılması ve kontrol işlemleridir. Aşağıdaki tabload ActiveX veri nesnesi metod ve özellileri vardır.
|
Metod |
Tanım |
|
Open |
Bir veri kaynağına yeni bir bağlantı yapar. |
|
Close |
Var olan açık bağlantıyı kapatır |
|
Execute |
Var olan bir sorguyu, SQL cümlesini yada stored proceduru çalıştırır. |
|
BeginTrans |
Yeni bir işlem başlatır |
|
CommitTrans |
Yapılan işlemi kaydeder |
|
RollBackTrans |
Yapılan işlemdeki değişiklikleri iptal eder. |
|
OpenSchema |
Sunucudaki skriptler için veri tabanı şemasını kolon tablo vs. görüntülenmesini sağlar. |
|
Özellik |
Tanım |
|
Attributes |
Var olan işlem bittiğinde yenisinin başlamasının kontrolünü yapar |
|
CommandTimeOut |
Dönen bir hata veya denemenin bitirilmesinden önce komut bekleme süresini belirler. |
|
ConnectionString |
Bilgi kaynağına bağlanılırken kullanılna bilgi. |
|
ConnectionTimeOut |
Hata dönüşü veya denemeden önce bağlantı oluştururken kaç saniye bekleyeceği |
|
CursorLocation |
İmlecin sunucu(AdUseServer) damı yoksa istemci tarafında(AdUseClient) mı konumlandırılacağı |
|
DefaultDataBase |
Varsayılan Veritabanına dönüşü sağlar |
|
IsolationLevel |
İzolasyon seviyesini belirler |
|
Mode |
Sağlayıcının erişim izinlerini ayarlar veya döndürür |
|
Provider |
Sağlayıcının adını ayarlar veya döndürür |
|
Yil |
Bağlantının açık veya kapalı olmasını döndürür. |
|
Version |
ADO’nun versiyon no’sunu döndürür. |
Bir kere bağlantı nesnesinin ömeğini sunucu nesnesi CreateObject metodu ile oluşturduğumuzda onu kullanmaya hazırızdır. Aslında bu bir şey değildir. Bir sonraki adım veri kaynağını açmak için bağlantıyı kullanmaktır. Bu yolla veriye erişir ve kaynağın içinde kullanırız. Bu da yeni open metoduyla yani bağlantı nesnesinin sağladığı başarıdır. Open metodunun bağlantı nesnesi için gerekli kullanım:
Connection.Open BağlantıStringi, Kullanıcı, Şifre
Bağlantı Stringi parametresi veri kaynağının adıyla (DSN) koşullanır. Eğer DSN yerine detaylı bağlantı koşulu sağlarsak ADO 5 Standart parametre tanımlar. Herhangi bir eşitlik işaretine sahip BağlantıStringi detaylı bağlantı olarak açılır.
|
Parametre |
Tanım |
|
Provider |
Bağlantı için gerekli kaynağın ismi |
|
FileName |
Bağlantı kaynağının dosya ismi |
|
Datasource |
Kaynak adı veya veri kaynağının dosya adı ODBC ile ilişkili SQL veri tabanı |
|
User |
Bağlantı açılırken kullanmak için kullanıcı adı |
|
Password |
Bağlantı açılırken kullanılacak şifre |
|
|
|
Bu parametrelerin hiçbiri ADO Tarafından kullanılmaz ve direkt kaynaktan gelir.
Provider veya file name parametrelerinden sadece birini belirleyebiliriz. Bağlantıyı bir defa açtıktan sonra, BağlantıStringi sadece okunabilir konumdadır.
Set VTBag=Server.CreateObject(“ADODB.Connection”)
VTBag.Open “DataBase=cihaz;DSN=cihaz;UID=sa;PassWord= ;”
Bağlantı cümlesi detaylı olarak bu şekildedir.
Verileri, veri kaynağına çevirmek için bağklantı nesnesinin execute metodu kullanılır.
Örnek
Set VTBag=Server.CreateObject(“ADODB.Connection”)
VTBag.Open “cihaz”
VTBag.Execute “DELETE FROM Cihaz Where yil=’1991’”
VeriTabanı kullanıldıktan sonra aktif bağlantıyı kapatabiliriz. Bu işlem nesnenin kullandığı bellek kaynaklarını serbesty bırakmak için de nothing metodu kullanılır.
VTBag.Close
Set VTBag=Nothing
Yapılması tavsiye edilse de Active Server Pages referans dışına çıkınca otomatik olarak bu işlemi yapar.
Sorgulardan dönen verileri depolamak için recordset nesneleri kullanılır. Bu nesne kayıtları bellekte tutan bir tablo olarak düşünülebilir.
|
Metod |
Açıklama |
|
AddNew |
Güncellenebilir kayıt kümesine yeni kayıt ekler |
|
CancelBatch |
Yığın halindeki bir güncellemeyi iptal eder |
|
Clone |
Geçerli kayıt kümesinin bir çiftini oluşturur |
|
Close |
Açık bir kayıt kümesini ve ona bağlı nesneyi kapatır. |
|
Delete |
Kayıt kümesindeki geçerli kaydı siler. |
|
GetRows |
Bir Dizideki satırların sayısını dödürür. |
|
Move |
Pozisyonu belirtilen kayda taşır |
|
MoveFirst MoveLast MovePrevious Move Next |
İlk, son, önceki ve sonraki kayıtlarda gezmek için kullanılır. |
|
NextRecordSet |
Sorgudaki bir sonraki kayıt kümesine geçer |
|
Open |
Bir kümesinde bir imleç açar |
|
Requery |
Orjinal sorguyu bir defa daha çalıştırarak veriyi günceller. |
|
Resync |
Veriyi günceller, fakat sorguyu yinelemez, sadece güncellenen kayıtları günceller. |
|
Supports |
Kayıt kümesinin esas fonksiyonları desteklemesini sağlar |
|
Update |
Geçerli kayıttaki değişiklikleri saklar |
|
UpdateBatch |
Yığın halindeki güncellemeleri diske yazar |
|
Özellik |
Açıklama |
|
BOF |
Geçerli kayıt ilk kayıt ise True döndürür |
|
EditMode |
Geçerli Kaydın durumunu gösterir |
|
EOF |
Geçerli kayıt son kayıt ise True döndürür |
|
RecordCount |
Kayıt kümesindeki geçerli kayıtların sayısını döndürür |
|
Status |
Geçerli kaydın durumunu gösterir |
Recordset’e bilgi yüklemek için SQL Sorgularını kullanabiliriz.
Set VTBag=Server.CreateObject(“ADODB.Connection”)
VTBag.Open “Cihaz”
Set oRs=VTBag.Execute “SELECT * FROM Cihaz WHERE yil=’1999’”
Sadece veri döndürebildiği için Execute Metodu’nun bir kullanım şeklide sadece tabloa adı yazmaktır.
Set VTBag=Server.CreateObject(“ADODB.Connection”)
VTBag.Open “Cihaz”
Set oRs=VTBag .Execute (“Cihaz”)