Tekil Mesaj gösterimi
Alt 17 Mart 2007, 20:39   #8
Çevrimdışı
telNET
Kullanıcıların profil bilgileri misafirlere kapatılmıştır.
IF Ticaret Sayısı: (0)
IF Ticaret Yüzdesi:(%)
Cevap: ASP Anlatımı (Dökümandır)




Uygulama (Application) ve Oturum (Session) Nesnesi
ASP’nin varlık sebebi, standart CGI’ın yetersiz kaldığı noktalardan biri olan Web Server’ın her bir Web ziyaretçiyi oturumunun başından sonuna izleyebilmesi içindir, dersek durumu abartmış olmayız. ASP açısından, bir site “uygulama programı” (Application) sayılır. Her ziyaretçi de bir “oturum” (Session) sayılır. Bir takım ASP ve HTML sayfalarından oluşan bildiğimiz Site’ye application, her hangi bir ziyarete de session denmesinin sebebi nedir? Bunu her iki nesnenin işlevleri ile açıklayabiliriz.
Application nesnesi, sitenin tümüyle ilgili bilgileri (değişkenleri, nesneleri ve metodları) tutar; Session nesnesi ziyaretçinin sitemize girmesinden itibaren izini sürer. Diyelim ki bir borsa sitesi yaptınız; ziyaretçileriniz gelerek, satışa sunulan hisse senetlerinin değerlendirmelerini okuyacak ve size “Şu, şu hisse senetleri al!” diye talimat bırakacak. Bütün ziyaretçilerinizin erişeceği sadece bir veritabanınız var; buna karşılık her bir ziyaretçinin yapacağı farklı tercihler, vereceği farklı kararlar olacaktır. Application nesnesi, sitenizle (artık site yerine Web Uygulama Programı desek de ağzımız alışmaya başlasa!) veritabanına erişmekten tutun, alışverişlerie kadar sitede yapılacak bütün işlerin bütün kurallarını bilecek ve uygulayacak; Session nesnesi ise sözgelimi benim alışverişlerimi, tercihlerimi bilecektir.
HTML ve Javascript ile biraz oynadıysanız, bilirsiniz ki bir sayfadan ötekine değişken değeri aktarmak, imkansıza yakın derecede zordur. Değişkenlerin ömrü, fonksiyonla sınırlıdır. Bir ASP sayfasında herhangi bir değişkeni fonksiyon dışında tanımlamakla ve değer atamakla onu bütün fonksiyonlar için geçerli hale getirebiliriz. Fakat kimi zaman isteriz ki, bir fonksiyonun değeri bütün sayfalarda aynı olsun; ziyaretçinin sayfa değiştirmesi ile değişkenin değeri değişmesin. Bunu ASP’de yapmak çok kolaydır. ASP’de bu zorluğu yenebilmek için değişkenlerimizi Session nesnesi için oluşturabiliriz; ve bu değer ziyaretçinin oturumu boyunca devam eder; bütün ASP sayfalarındaki bütün Fonksiyonlar tarafından bilinebilir. Örneğin:
Session (“Tupras”) = 44500
bütün Session için geçerli bir Tupras değişkeni oluşturur ve ona “44500” değerini atar. Kimi zaman, değişkenin çok daha geniş kapsamlı olmasını, yani ömrünün Session ile değil bütün Application boyunca belirli olmasını isteyebiliriz. O zaman bu değişkeni Application düzeyinde tanımlayabiliriz:
Application (“Tupras”) = 44500
Bu durumda Tupras değişkeni bütün ziyaretçiler için aynı değere sahip olacakatır.
Session nesnesinin oluşabilmesi için, ziyaretçiye mutlaka bir Cookie göndererek, sitemizde (hani “Uygulama Programı” diyecektik?) bir işaret vermemiz gerekir. Daha önce, HTTP ile kurduğumuz bağlantı, belirsiz durum bağlantısıdır demiştik. Bu, Server’ın bir ziyaretçiye arzu ettiği sayfayı gönderdikten sonra, onu alıp almadığını, o sayfada ne tercihler yaptığını bilmemesi demektir. Oysa, ziyaretçiye sitemize bağlandığı anda bir Session kimliği verirsek ve her yeni sayfa talebinde bu kimliği kontrol edersek, kimin hangi oturumunu sürdürdüğünü biliriz. ASP–uyumlu bir Web Server, ziyaretçi yeni bir tercih yapmadığı taktirde her Session nesnesini 20 dakika açık tutar; sonra siler. Bu süreyi Session nesnesinin Timeout özelliği yoluyla değiştirebilirsiniz. Session belirleyen Cookie ASP-uyumlu Web Server tarafından otomatik olarak gönderilir ve takip edilir; tasarımcı olarak bizim bu konuda bir şey yapmamız gerekmez.
Bir Web programınıza aynı anda kaç kişi ulaşırsa (yani sayfalarınızı kaç kişi talep ederse), o kadar Session nesnesi oluşur; fakat siteniz bir adet olduğuna göre bir adet Application nesnesi vardır. Bu nesnenin bütün Session’lar için sitemizin ihtiyaçlarına uygun ve aynı uygulama kurallarına sahip olmasını sağlayan bir dosya vardır: Global.asa. Bu dosya PWS veya IIS kurulurken oluşturulur. ASP ile Web programlarınızı, örneğin MS Visual Studio ile oluşturuyorsanız, program sizin için seçtiğiniz dizinde bir Global.asa dosyası oluşturacaktır. Bu dosyada, çoğu zaman, sitemize ilk ziyaretçinin gelmesiyle oluşan Application_OnStart ve son ziyaretçinin çıkmasıyla oluşan Application_OnEnd ile herhangi bir ziyaretçinin bir sayfaya erişmesiyle oluşan Session_OnStart ve ziyaretçinin sitemizden çıkması ile oluşan Session_OnEnd olayları halinde ne yapılacağı yazılıdır. Bu dosyanın içeriği standart bir ASP dosyasına benzemekle birlikte adındaki uzatmanın .asp değil de .asa olmasının sebebi, dosyanın Active Server Application dosyası olmasıdır. ASP-uyumlu bir Web Server programı sitemize ulaşan ilk ziyaretçiyi gördüğü anda Global.asa dosyasını çalıştırır.
Application ve Session nesnelerin kendi başlarına en çok kullanıldığı yer, sitemize gelen ziyaretçilerin sayısını (sitemizin aldığı Hit sayısını) tutmasını sağlamaktır. Bu genellikle Global.asa pogramına bir sayaç yerleştirilerek yapılır.
-----------------
ActiveX Veri Erişim (ADO) Nesneleri
ASP’nin diğer CGI tekniklerine göre kolay olmasının (peki, kabul, “kolay görünmesi” diyelim!) belki de sadece veri erişimini adeta çocuk oyuncağı haline getirmesidir. ADO, gerçekte bir ASP nesnesi olmaktan çok Server Component’i (sunucu bileşeni) sayılır. Bu bileşene biz ASP içinden bir ActiveX nesnesi ile ulaşırız.
Veritabanı, günümüzde giderek Web Programlarının temelini oluşturuyor. Sayfaların unsurları veritabanı dosyasından alınıyor; ziyaretçilerin verdikleri bilgiler veritabanına yazılıyor. Bu gelişimin başlıca sebebi, veritabanının site güncelleştirme işlerini kolaylaştırmasıdır. Söz gelimi bir sayfadaki seçenekleriniz, bir veritabanından alınıyorsa, bu seçenekleri alan VBScript kodu hiç değişmeden kalacak ve siz sadece veritabanı dosyanızda ilgili verinin alındığı alana yeni değerler girerek, sayfanızı sürekli güncel tutmuş olacaksınız. Bir diğer sebep ise veritabanı dosyalarının idaresinin kolay olmasıdır. Sözgelimi ziyaretçilerinizden aldığınız bilgileri daha sonra muhasebe kayıtlarınıza veya adres defterinize, müşteri kütüğüne ya da başka suretle kayda geçirmek istiyorsunuz. Ziyaretçilerimizin form yoluyla bize ilettiği bilgileri düzyazı dosyasına işlemenin yollarını Dosya sistemi Nesnesi’ni (FileSystem) görürken, ele aldık. Bunu yapabiliriz kolayca. Ama daha sonra düz yazı dosyasının idaresi, veritabanının idaresi kadar kolay olamaz. ASP sayfalarınız Access, Excel, Paradox, FilePro, SQL Server ve Oracle veritabanlarına ve spreadsheet dosyalarına erişebilir; bu dosyalardan veri okur ve bu dosyalara veri yazabilir. Özetle, ASP programlarımızla, SQL-uyumlu veya Windows ve diğer sistemler için yazılmış ODBC (Open Database Connectivity/Açık Veritabanı Bağlantısı) ile uyumlu her türlü dosyaya, ADO nesnesi aracılığıyla ulaşabiliriz.
ODBC ve OLE-DB
Bu kitapçığın baştarafında, ASP dosyalarınızı geliştirmeye başlamadan önce bilgisayarınızda ODBC (Open Database Connectivity/Açık Veritabanı Bağlantısı) sürücülerinin kurulu olması gerektiğini belirtmiştik. ODBC, ADO’nun kullandığı tek sistem değildir; ve Microsoft firması, ODBC’nin yerine hızla OLE-DB adını verdiği yeni bir teknolojinin alması için yoğun çaba içinde. OLE-DB, ODBC’nin Web’de sağladığı başarının üzerine bina edilen yeni bir teknoloji. ODBC, ilişkilendirilmiş (relational) veritabanlarına erişmek üzere tasarlandığı halde OLE-DB her türlü veritabanına erişebilir. OLE-DB, ASP programlarımıza yeni nesneler kazandırabilir; kullanılmaya hazır elektronik ticaret bileşenlerini kullanmaya imkan verir. Bu konuda geniş bilgiyi, Microsoft’tan edirebilirsiniz.
ASP sayfalarımızda kullanacağımız ADO nesneleri ilerde de ODBC sürücülerine erişme imkanını koruyacağı için, şimdilik sadece ODBC tekniği ile çalışmakta ve bu tekniği öğrenmekte sakınca yok. OLE-DB, ODBC’nin yerini almayacak; fakat içinde ODBC’yi de bulunduracak. Bu da şu anda oluşturacağımız ASP uygulamalarının ilerde OLE-DB tekniği ile çalışan sunucularda işleyeceği anlamına geliyor.
Şimdi ADO ile aşağıda yapacağımız küçük örnekler için bilgisayarınızda kurulu bir veritabanı programı varsa onu kullanarak bir veritabanı dosyasında uyeler adıyla şu tabloyu oluşturabilirsiniz:
Alan Adı: Veri türü
uyeNo AutoNumber (Birincil Anahtar/Primary Key)
uyeAdi metin
uyeSoyadi metin
email metin
mesaj memo
Daha sonra da renkler adıyla şu tabloyu yapın:
Alan Adı: Veri türü
renkID AutoNumber (Birincil Anahtar/Primary Key)
renk metin
Bu tablolardan birincisine bir kaç isim ve diğer bilgileri; ikincisine ise dört-beş renk adı girin. Bilgisayarınızda veritabanı oluşturma programı yoksa bu kitapçığın kodları arasında bulunan uyeler.mdb adlı MS-Access dosyasını kullanabilirsiniz. Bu dosyayı, kişisel Web Server’ınızın kök dizinine kopyalayın. Sonra, Denetim Masası’nı açın ve adı ODBC, ODBC 32 Bit, ya da ODBC Data Source olan simgeyi çalıştırın; ikinci sekme olan System DSN’i tıklayın.
Açılacak kutuda Add/Ekle düğmesini tıklayarak, yeni veri kaynağı oluşturmak için ilk adım olan veriyi okumakta kullanacağımız sürücüyü seçebileceğimiz kutunun açılmasını sağlayın. Burada, yukarıda oluşturduğunuz veri dosyasına uygun sürücüyü seçin. Örnek uyeler.mdb’yi kullanıyorsanız, birinci seçenek olan Microsoft Access Driver’ı seçmeniz gerekir. Son düğmesini tıklayın ve Access dosyasının kurulumunu yapmaya başlayalım. Buradaki Data Source Name (DSN, Veri Kaynak Adı), biraz sonra ADO nesnesiyle ilgili metodları ve deyimleri yazarken kullanacağımız veri adıdır; buraya “uyeler” yazın; çünkü örneklerde bu veriye “uyeler” adıyla gönderme yapacağız. İsterseniz, Description/Açıklama bölümüne veritabanının niteliğini belirten bir kaç kelime yazabilirsiniz. Sonra, Select/Seç düğmesini tıklayarak ve açılıcak diyalog kutusu yardımıyla veritabanı dosyasını kopyaladığınız yerde bulun; OK/Tamam’ı tıklayarak, veritabanı seçme işlemini tamamlayın.
DSN oluşturma kutularını sırasıyla OK/Tamam düğmelerini tıklayarak kapatın; “uyeler” verisi, şu andan itibaren bütün Web uygulamalarımızın hizmetine girmiş demektir.
Internet sitenize koyacağınız ve veritabanına erişmesi gereken sayfalarınız için bu işlemi gerçek Internet ortamında da yapmak zorundasınız. Veritabanı dosyanızı Internet sitenizde kök dizinine veya bir diğer dizine kopyaladıktan sonra sistem yöneticisine ya elektronik mektupla, ya da evsahibi firmanın yönetim ve teknik destek yardımı sağlayan sayfasında veritabanınızın dosya adını, yolunu, ve DSN olarak kullanmak istedeğiniz ismi bildirerek, bizim burada yaptığımız işi Server yöneticisinin yapmasını sağlamamız gerekir.
ADO’nun bize sağladığı imkanlardan yararlanabilmek için onun nesnelerini kullanılırız. Bu bölümde ADO’nun nesneleri ve metodlarını ele alacağız.
Connection (Veritabanına bağlantı)
ADO’dan yararlanabilmek için kullanacağımız ilk nesne Connection’dır. Bu nesne ile veritabanı ile bağlantı sağlarız, yol açarız:
<%
Dim Veriyolu
Set Veriyolu = Server.CreateObject(“ADODB.Connection”)
Veriyolu.Open “Veri_adi”
%>
Burada, Server’ın CreateObject metodu ile ADOBD.Connection nesnesini oluşturuyoruz. Oluşturduğumuz bağlantıya istediğimiz değişken adını verebiliriz. Bu &#246;rnekte veriye kurduğumuz bu bağlantı Veriyolu adıyla biliyor. Bu yolla sağlayacağımız veriler, ASP programı boyunca bir isimle bilinmelidir. Veriyolunun a&#231;acağı veri k&#252;mesinin ismini buradaki “Veri_adi” kelimelerinin yerine yazarız. Bu isim, bağlantının .Open metodu ile a&#231;acağı verinin adıdır. Bu, kullanacağımız veritabanı dosyasının adı değildir. Bu isim ile s&#246;z konusu veritabanı dosyasını işletim sisteminin ODBC aracına tanıtırken kullandığınız isim aynı olmalıdır. Bir veritabanı dosyasını ODBC aracını kullanarak sisteme tanıtma (DSN-Data Source Name) ayarının nasıl yapıldığını daha &#246;nce ele aldık. Bu &#252;&#231; satırla, ASP programı, Server’dan ADO aracılığıyla, sistemin “Veri_adi” kelimelerinin yerine yazacağınız isimli veriye yol a&#231;acaktır. &#214;rneğin yukarıdaki kutuda oluşturduğumuz ODBC veri kaynağını kullanacağımız zaman, buraya “uyeler” kelimesini yazacağız,
Recordset (Kayıt dizisi)
Veritabanına bağlantıyı oluşturduktan sonra, buradaki tabir yerindeyse ham verileri, kullanılır kayıtlar haline getirmemiz gerekir. Bunu ise ADO’nun Recordset nesnesi sağlar. Kurduğumuz veriyolundan programımıza bilgi gelmesi i&#231;in .Execute (icra et) metodunu kullanırız; ancak bu komuta icra edeceği bir komut vermemiz gerekir.
Baştan beri ADO ile kullanabileceğimiz veritabanının SQL (sequyel okunur; Structured Query Language/Yapısal Sorgu Dili) uyumlu olması gerektiğini s&#246;yl&#252;yoruz. Bu dil, verilerin sabit diske yazılması ve okunmasını d&#252;zenleyen bir &#231;ok veritabanı dilinden sadece biri, fakat en yaygınıdır. Bir veritabanından veri okumak, veri değiştirmek veya eklemek i&#231;in komutlarımızı bu dille vermek zorundayız.
ASP amacıyla SQL komutlarından &#231;ok az kısmını kullanırız; bu bakımdan ASP Tasarımcısı olmak i&#231;in sınırlı da olsa SQL &#246;ğrenmek gerekir.
Hızlı SQL Kursu: Select
ASP ama&#231;lı olarak kullanacağımız komut ger&#231;ekte sadece SELECT’tir. Fakat hatırlamamız gereken veritabanı ilkeleri var. Bir veritabanı kabaca alanlar (s&#252;tunlar) ve bunların i&#231;inde yazılı değerler (satırlar) halinde olur; her satır bir elemanın değerleridir; ve Kayıt adını alır.
SELECT Bir veritabanından veri se&#231;meye yarar. SQL Sorgusu da denir. D&#246;rt b&#246;l&#252;m&#252; vardır. Tipik bir SELECT komutu ş&#246;yle yazılır:
SELECT alan1, alan2.. FROM tablo WHERE koşul = değer ORDER BY alan1
Se&#231;ilecek alanların adı SELECT komutunun ilk b&#246;l&#252;m&#252;n&#252; oluşturur. Bir veritabanında birden fazla tablo bulunabilir; se&#231;imin hangi tabloda yapılacağı FROM b&#246;l&#252;m&#252;nde g&#246;sterilir. Kimi zaman bir tablodaki alanda bulunan b&#252;t&#252;n kayıtları se&#231;mek isteyebiliriz; fakat &#231;oğu zaman se&#231;imin sınırlarını daraltmak i&#231;in s&#246;zgelimi bir alandaki değerlerin vereceğimiz bir koşula uymasını isteyebiliriz. Bu durumda “koşul = değer” testini WHERE b&#246;l&#252;m&#252;nde yaparız. Se&#231;ilen değerlerin hangi alandaki kayıtlara g&#246;re sıralanmasını istiyorsak, ORDER BY b&#246;l&#252;m&#252;nde bunu belirtelibiliriz. &#214;rnek:
SELECT Adi, Soyadi, TelNo FROM Telefonlar WHERE Alankodu = 0535 ORDER BY Adi
Bu komutla veritabanının Telefonlar isimli tablosundan Adi, soyadi ve TelNo adlı s&#252;tunlarındaki kayıtlardan Alankodu s&#252;tunundaki değeri “0535” olanları se&#231;miş oluruz. Bir tablodaki b&#252;t&#252;n alanların b&#252;t&#252;n değerlerini se&#231;mek i&#231;in SELECT komutunu ş&#246;yle yazarız:
SELECT * FROM Veri_adi
Buradaki “Veri_adi” kelimelerinin yerine DSN’e verdiğiniz adı (orneğin yukarıdaki &#246;rnekte olduğu gibi, “uyeler” kelimesini) yazacaksınız.
SQL’in INSERT, UPDATE ve DELETE komutlarının nasıl kullanıldığını &#246;ğrenirseniz, ADO nesnesinin bunlara denk gelen ve aşağıda nasıl kullanıldıklarını g&#246;receğimiz yeni kayıt ekleme, kayıtları g&#252;ncelleme ve silme metodları yerine kendi SQL komutlarınızı yazabilirsiniz.
Sağladığımız veri bağlantısını kullanarak, yararlanabileceğimiz bir veri grubu oluşturmak i&#231;in, yukarıda .Connection metodunu kullanırken yazdığımız kodu ş&#246;yle geliştirmemiz gerekir:
<%
Dim Veriyolu, Kayitdizisi
Set Veriyolu = Server.CreateObject(“ADODB.Connection”)
Veriyolu.Open “Veri_adi”
Set Kayitdizisi = Veriyolu.Execute(“SELECT * FROM Veri_adi”)
%>
Buradaki .Execute metodu, DSN’ini verdiğiniz kaynaktaki veritabanından verileri fiilen alıp getirmeye ve bir Recordset (Kayıt dizisi) oluşturmaya yarar. Kayıtları tek tek okuması i&#231;in Kayitdizisi’ne bir sonraki kayda gitmesini bildirmemiz gerekir. Bunu .MoveNext (bir sonrakine git) metodu ile yaparız. Okunan her kayıt Kayitdizi adlı değişkenin i&#231;indedir. Bu nesnenin elemanlarını herhangi bir d&#246;ng&#252; y&#246;ntemiyle ziyaret&#231;inin Browser penceresinde g&#246;r&#252;nt&#252;leyebiliriz; bir HTML etikenin i&#231;eriği yapabiliriz; veya başka bir şekilde kullanabiliriz. Aynı d&#246;ng&#252;, .MoveNext ile bir sonraki kaydın okunmasını da sağlayacaktır. Bunun bir &#246;rneğini daha sonra g&#246;receğiz.
Recordset.Open
Veritabanına dayanan Web uygulamalarımızda sorun buradaki gibi sadece veriyi okumakla bitmeyebilir; veriyi g&#252;ncelleştirmek veya silmek isteyebiliriz. Bunun i&#231;in doğruca ADO’nun .Recordset metodundan yararlanmamız gerekir. .Recordset metodu ne yapar? Tıpkı ekranınızdaki bir yazının i&#231;inde duran imle&#231; (cursor) gibi hayal&#238; bir imleci g&#246;t&#252;r&#252;r verilerinizin en başına koyar. Bu hayali imleci veritabanı &#252;zerinde dolaştırmak ve gittiği yerdeki değeri okutmak bizim işimizdir.
.Recordset metodu, ile bir veritabanını okuyacak imleci &#252;&#231; şekilde ayarlayabilirsiniz:
Static (Duragan) SELECT komutu icra edilir ve okunan kayıt arzu ettiğiniz değişkene yazılır. (ADO Sabit Değerleri dosyasınıdan yararlanıyorsak, adOpenStatic)
Forward only (Sadece ilerle) İmle&#231; veritabanı i&#231;inde sadece ileri doğru gider ve her seferinde bir kayıt okunur. (Varsayılan imle&#231; t&#252;r&#252; budur.) (ADO Sabit Değerleri dosyasınıdan yararlanıyorsak, adOpenForwardonly)
Dynamic (Dinamik) Veritabanına ulaşan ve değişiklik yapan başka bir kullanıcı varsa, bu değişiklik size anında yansıtılır. (ADO Sabit Değerleri dosyasınıdan yararlanıyorsak, adOpenDynamic)
Bu y&#246;ntemlerden birini se&#231;mekle veriyi belirli bir okuma tarzında a&#231;mış olursunuz. Bu y&#246;ntemlerden hangisini se&#231;tiğinizi .Recordset metodunu kullanacak olan .Open komutunun arg&#252;manı olarak a&#231;ık&#231;a belirtmeniz gerekir. ADO, bunun i&#231;in sizden sayılar halinde arg&#252;manlar ister.
ADO Sabit Değerleri
ADO+ODBC yoluyla kuracağımız veri bağlantıları, &#231;oğu zaman adeta şifreli ifadeler i&#231;erebilir ve bir &#231;ok komutun arg&#252;manı &#246;ğrenmesi zor sayılar halinde verilir. Microsoft ve kullanılmaya hazır ASP Uygulamaları &#252;reten firmalar, bu karmaşık ifadeleri d&#252;z metinler olarak ifade etmeye yarayan haric&#238; dosyalar (include files) hazırlar ve sunarlar. Bunlar arasında en yaygın olanı (bu kitap&#231;ığın kodları arasında bulunan) Microsoft’un ADOVBS (adovbs.inc) dosyasıdır. (Aynı dosyanın JavaScript s&#252;r&#252;m&#252; ise adojavs.inc ardını taşır). Bu dosyadan yararlanabilmek i&#231;in, sitenize kopyalamanız ve daha sonra sayfalarınıza şu kodu eklemeniz gerekir:
<!- - #include file=”adovbs.inc” - - >
Bu dosya, Server tarafından icra edilir ve ADO nesnesinin sayı halindeki b&#252;t&#252;n arg&#252;manlarını anlaşılabilir İngilizce kelimelere &#231;evirir. Bu dosyanın i&#231;eriğinden nasıl yararlanacağımızı ele alacağız.
Bir veriye bağlantıyı kurduktan sonra kayit dizimizi .Recordset metodu ile sağlayacaksak, yukarıdaki &#246;rnek kodumuzu ş&#246;yle yazmak gerekir:
<!- - #include file=”adovbs.inc” - - >
<%
Dim Veriyolu, Kayitdizisi, Sorgu
Set Veriyolu = Server.CreateObject(“ADODB.Connection”)
Veriyolu.Open “Veri_adi”
Set Kayitdizisi = Server.CreateObject(“ADODB.Recordset”)
Sorgu = “SELECT * FROM Veri_adi”
Kayitdizisi.Open Sorgu, Veriyolu, aOpenStatic
%>
Bu kod ile, .Recordset metodu son .Open komutu ile bizim i&#231;in veri bağlantısını sağlar; verdiğimiz SQL Sorgusu icra edilir ve kayıt diziniz Kayitdizisi’ne kaydedilmeye hazır hale gelir. Şimdi imlecinizi ilerleterek, veriyi fiilen okutmanız gerekir; ki bunu yapmak i&#231;in yukarıda kolayca .Execute metodu ile oluşturduğumuz kayıt dizisinde kullandığımız basit .MoveNext’ten daha &#231;ok imkana sahibiz:
MoveFirst: Kayıt dizisinin (Recordset’in) birinci satına gider.
MoveLast: Kayıt dizisinin (Recordset’in) son satına gider.
MoveNext: Kayıt dizisinin (Recordset’in) bir sonraki satına gider.
MovePrevious: Kayıt dizisinin (Recordset’in) bir &#246;nceki satına gider.
Move: Kayıt dizisinin (Recordset’in) i&#231;inde vereceğiniz sayıya g&#246;re ilerler. Bunun i&#231;in iki sayı vermeniz gerekir: başlangı&#231; noktası ve ilerlenecek kayıt sayısı.
Recordset.Update
Veritabanından aldığımız değerleri, kimi zaman ziyaret&#231;inin vereceği değerlerle veya ziyaret&#231;inin bir takım tercihleri sonucu g&#252;ncelleştirmemiz gerekir. Bu Recordset nesnesinin .Update metodu ile kolayca yapılır. Yalnız burada hassas bir nokta var: diyelim ki aynı anda iki veya daha fazla kullanıcı Web programımızın veritabanına ulaşır ve aynı anda değişiklik yaparlarsa ne olur?
Biraz &#246;nce Recordset’in .Open metodunun imle&#231;lerinden s&#246;z ederken, okumanın y&#246;n&#252;n&#252; veya imlecin hareket tarzını belirleyen arg&#252;manları sıralamıştık. Bu arg&#252;man dizisine bir yenisini ekleyerek, veritabanına erişimin niteliğini ve g&#252;ncelleştirmenin nasıl yapılacağı ve yansıtılacağını da belirleyebiliriz. Bu işlemin temel ilkesi veritabanı kayıtlarının kilitlenmesi esasıdır. Bu kilitlemenin t&#252;r&#252;n&#252; belirleyerek, g&#252;ncelleştirmenin de nasıl yapılacağını belirlemiş oluruz. Burada kullanacağımız arg&#252;manlar da ADO’nin şifreli sayıları olması gerekirken, adovbs.inc dosyası sayesinde İngilizce (ve dolayısıyla anlaşılabilir) kelimeler olur. advbs.inc dosyasını devreye soktuysanız, şu iki t&#252;r kiliti kullanabiliriz:
adLockReadOnly Kayıtların g&#252;ncelleştirilmesini &#246;nler; ziyaret&#231;imiz veritabanına kayıt yapmayacaksa, bu kilit t&#252;r&#252;n&#252; kullanmamız gerekir.
adLockOptimistic Veritabanına ek yapacaksak, mevcut kayıtmları d&#252;zelteceksek ve bazılarını sileceksek, bu kilit t&#252;r&#252;n&#252; kullanmamız gerekir.
Yukarıdaki kod &#246;rneğimizin sadece son satırını, bu metodu kullanmak amacıyla, ş&#246;yle yazabiliriz:
Kayitdizisi.Open Sorgu, Veriyolu, aOpenStatic, adLockOptimistic
Tabi&#238; bir veritabanını g&#252;ncelleştirmek i&#231;in imleci veritabanında doğru kaydın &#252;zerine g&#246;t&#252;rmek ve bu arada Recordset’in bize sağladığı mevcut verilerin yerine yeni değerleri atamış olmak gerekir. Bunu sağladıktan sonra b&#252;t&#252;n yapacağımız şey .Update metodunu kullanmak ibarettir:
Kayitdizisi(“Adi”) = “Necip Fazıl”
Kayitdizisi(“Soyadı”) “Dayanır”
Kayitdizisi.Update
Bu komut, imle&#231; o sırada hangi kaydın &#252;zerinde ise o kaydın “Adi” ve “Soyadi” alanlarındaki veriyi “Necip Fazıl” ve “Dayanır” haline getirir. Bu metodu kullanırken bir kaydın b&#252;t&#252;n alanlarını g&#252;ncelleştirmemiz veya g&#252;ncelleştirilmeyen alanları eski değerleri ile tekrar etmemiz gerekmez.
Recordset.Delete
Bir veritabanındaki kaydı silmek de ADO ile olduk&#231;a kolaydır. İmleci, silinecek kaydın &#252;zerine g&#246;t&#252;rd&#252;kten sonra, Recordset’in , .Delete metodunu &#231;ağırarak o andaki kayıt silinir. Bu metod, bir kaydı b&#252;t&#252;n alanlarındaki değerlerle birlikte (yani veritabanının bir satırını t&#252;m&#252;yle) siler:
Kayitdizisi.Delete
Recordset.AddNew
Bir veritabanına yeni kayıt eklemek istediğimizde, Recordset’in .AddNew (yeni ekle) metodundan yararlanırız. Bu metodun &#246;zelliği bizim imleci veritabanı i&#231;inde bir yere g&#246;t&#252;rme zorunluğumuz olmamasıdır. Bu metod kendiliğinden imleci dosyanın en son satırının altına g&#246;t&#252;r&#252;r. .AddNew metodu bir veritabanı dosyasına kayıt eklerken, veritabanında mevcut b&#252;t&#252;n alanlar i&#231;in değer vermenizi isteyecektir. &#214;rneğin
<%
Kayitdizisi.AddNew
Kayitdizisi(“Adi”) = “Necip Fazıl”
Kayitdizisi(“Soyadı”) “Dayanır”
Kayitdizisi(“TelNo”) = “0342-3390000”
Kayitdizisi.Update
%>
Veritabanına yeni kaydı, .Update metodunun yaptığına dikkat edin.
DSN’siz Veri Bağlantısı
Bu kadar DSN oluşturmayı &#246;ğrendikten sonra, “Aslında DSN olmadan da veritabanlarınıza ulaşabilirsiniz!” derlerse, herhalde &#231;ok sevinmeyiz. Ama işin doğrusu DSN yoludur. Fakat yine de DSN oluşturmadan veritabanına ulaşabileceğimizi bilmemiz gerekir.
DSN, genellikle Web Server’ları yavaşlatır; Web Server, DSN’ini belirttiğiniz veriye ulaşmak i&#231;in &#246;nce ODBC’nin yardımını ister; ODBC, bir takım s&#252;r&#252;c&#252;leri devreye sokar ve sonunda veriye ulaşırız. Bir DSN-verisine 20-30’dan fazla kullanıcı aynı anda eriştiği zaman bu yavaşlama g&#246;zle g&#246;r&#252;n&#252;r hale gelebilir. Bir s&#252;re &#246;ncesine kadar Microsoft firması, veriye dayanan Web sitelerinin veri-bağını DSN yoluyla kurmasını tavsiye ederken, şimdi MS yayınlarında sık sık DSN’siz veri bağlantısının da etkin şekilde kullanılacağı belirtiliyor.
Yukarıda verdiğimiz DSN &#246;rneği ş&#246;yle idi:
<%
Dim Veriyolu, Kayitdizisi
Set Veriyolu = Server.CreateObject(“ADODB.Connection”)
Veriyolu.Open “Veri_adi”
Set Kayitdizisi = Veriyolu.Execute(“SELECT * FROM Veri_adi”)
%>

 
Alıntı ile Cevapla

IRCForumlari.NET Reklamlar
sohbet odaları eglen sohbet reklamver