Tuesday, 13 October 2009

Recordset Kayıt İşlemleri RecordSet.Open

Recordset Kayıt İşlemleri

RecordSet.Open

Veritabanına dayanan Web uygulamalarımızda sadece veriyi okumak değil veriyi güncelleştirmek veya silmek isteyebiliriz. Bunun için doğruca ADO'nun .Recordset metodundan yararlanmamız gerekir. .Recordset metodu ne yapar? Tıpkı ekranınızdaki bir yazının içinde duran imleç (cursor) gibi hayalî bir imleci götürür verilerinizin en başına koyar. Bu hayali imleci veritabanı üzerinde dolaştırmak ve gittiği yerdeki değeri okutmak bizim işimizdir.

.Recordset metodu, ile bir veritabanını okuyacak imleci üç ş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ç veritabanı içinde sadece ileri doğru gider ve her seferinde bir kayıt okunur. (Varsayılan imleç türü 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öntemlerden birini seçmekle veriyi belirli bir okuma tarzında açmış olursunuz. Bu yöntemlerden hangisini seçtiğinizi .Recordset metodunu kullanacak olan .Open komutunun argümanı olarak açıkça belirtmeniz gerekir. ADO, bunun için sizden sayılar halinde argümanlar ister.

Öncelik veri tabanımızda uygulamalarına gecmeden once ADO konusunda anlatılan uyeler.mdb (wwwroot dizininde olmalı) dosyası üzerinden açıklamalar yapılacagını bildirmek isterim.

Ayrıca NT işletim sistemi kullanıyorsanız wwwroot klasörünün ve uyeler.mdb dosyasının güvenlik özelliklerini düzenlemeniz gerekir Örneklerin düzgün çalışabilmesi için.

RecordSet.Delete Kayıt Silme

Delete : Kayıt Silme

RecordSet.Delete

<%
Set VT= Server.CreateObject("ADODB.Connection" )
VT.Open "DBQ=" & Server.MapPath(" uyeler.mdb" ) & ";DRIVER={Microsoft Access Driver (*.mdb)}"
Set KS = Server.CreateObject ("ADODB.RecordSet" )
Sql = " Select * from table1 where uyeNo = 1"
KS.Open sql,VT,1,3
%>

<%
KS.Delete
%>

<%
KS.close
set KS=nothing
VT.close
set VT=nothing
%>

Bu Örnekte uyeNo =1 Olan kayıt Silinecektir. Eger 1 nolu kayıt yoksa asp kodumuz hata verecektir.

RecordSet.Addnew Yeni Kayıt Girme

AddNew : Yeni Kayıt Girme

RecordSet.Addnew

Bir veritabanına yeni kayıt eklemek istediğimizde, Recordset'in .AddNew (yeni ekle) metodundan yararlanırız. Bu metodun özelliği bizim imleci veritabanı içinde bir yere götürme zorunluğumuz olmamasıdır. Bu metod kendiliğinden imleci dosyanın en son satırının altına götürür (Bu girilen yeni kayıt Mdb Dosyamızda en son kayıtda yer alacaktır. ) .AddNew metodu bir veritabanı dosyasına kayıt eklerken, veritabanında mevcut bütün alanlar için değer vermenizi isteyecektir.

Örneğin

<%
Kayitdizisi.AddNew
Kayitdizisi("Adi") = "Can"
Kayitdizisi("Soyadı") "HANHAN"
Kayitdizisi("TelNo") = "2475326"
Kayitdizisi.Update
%>

Örnek asp AddNew uygulaması

<%
Set VT= Server.CreateObject("ADODB.Connection" )
VT.Open "DBQ=" & Server.MapPath(" uyeler.mdb" ) & ";DRIVER={Microsoft Access Driver (*.mdb)}"
Set KS = Server.CreateObject ("ADODB.RecordSet" )
Sql = " Select * from table1 "
KS.Open sql,VT,1,3
%>

<%
KS.AddNew
KS ("uyeAdi") = "Mete"
KS ("uyeSoyadi") = "Uygur"
KS ("email") = "meteuygur@xxxxx.com"
KS ("mesaj") = "Benim Mesajım"
KS.Update
%>

<%
KS.close
set KS=nothing
VT.close
set VT=nothing
%>


Update: Kayıt Guncelleme RecordSet.Update

Update: Kayıt Guncelleme

RecordSet.Update

Veritabanından aldığımız değerleri, kimi zaman ziyaretçinin vereceği değerlerle veya ziyaretçinin bir takım tercihleri sonucu gü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 önce Recordset'in .Open metodunun imleçlerinden söz ederken, okumanın yönünü veya imlecin hareket tarzını belirleyen argümanları sıralamıştık. Bu argüman dizisine bir yenisini ekleyerek, veritabanına erişimin niteliğini ve gü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ürünü belirleyerek, güncelleştirmenin de nasıl yapılacağını belirlemiş oluruz. Burada kullanacağımız argü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ür kiliti kullanabiliriz:

adLockReadOnly Kayıtların güncelleştirilmesini önler; ziyaretçimiz veritabanına kayıt yapmayacaksa, bu kilit türünü kullanmamız gerekir.

adLockOptimistic Veritabanına ek yapacaksak, mevcut kayıtmları düzelteceksek ve bazılarını sileceksek, bu kilit türünü kullanmamız gerekir.

Yukarıdaki kod örneğimizin sadece son satırını, bu metodu kullanmak amacıyla, şöyle yazabiliriz:

Kayitdizisi.Open Sorgu, Veriyolu, aOpenStatic, adLockOptimistic

Tabii bir veritabanını güncelleştirmek için imleci veritabanında doğru kaydın üzerine götürmek ve bu arada Recordset'in bize sağladığı mevcut verilerin yerine yeni değerleri atamış olmak gerekir. Bunu sağladıktan sonra bütün yapacağımız şey .Update metodunu kullanmak ibarettir:

Kayitdizisi("Adi") = "Can"
Kayitdizisi("Soyadı") "HANHAN"
Kayitdizisi.Update

Bu komut, imleç o sırada hangi kaydın ü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ütün alanlarını güncelleştirmemiz veya güncelleştirilmeyen alanları eski değerleri ile tekrar etmemiz gerekmez.

Update - Örnek Uygulama

<%
Set VT= Server.CreateObject("ADODB.Connection" )
VT.Open "DBQ=" & Server.MapPath(" uyeler.mdb" ) & ";DRIVER={Microsoft Access Driver (*.mdb)}"
Set KS = Server.CreateObject ("ADODB.RecordSet" )
Sql = " Select * from table1 where uyeNo = 1"
KS.Open sql,VT,1,3
%>

<%
KS ("uyeAdi") = "Kaan"
KS ("uyeSoyadi") = "Ateş"
KS ("email") = "kaanates@xxxxx.com"
KS ("mesaj") = "Kaanın Mesajı"
KS.Update
%>

<%
KS.close
set KS=nothing
VT.close
set VT=nothing
%>

Bu Örnekte uyeNo =1 Olan kayıt verilen degerlere gore güncellenir. . Eger 1 nolu kayıt yoksa asp kodumuz hata verecektir.

asp-dersi.blogspot.com yasal Uyarı

asp-dersi.blogspot.com reklam sponsorlarıyla çalışmaktadır. Sponsorumuz olan Google Adsense Reklamlarının yayıncısıdır. Google üçüncü taraf satıcısı olarak asp-dersi.blogspot.com'da reklam yayınlamak için çerezlerden yararlanır. Bu sebeble hem Google hemde DoubleClick DART çerezi kullanmaktadır bu sayede kullanıcılarının ilgi alanlarına göre Reklam yayınlama Tekniğini kullanmaktadır. Ziyaretçilerimiz ve üyelerimiz Google Reklam ve içerik ağı ve gizlilik ağı politikası'nın yayınlandığı Advertising and Privacy - Google Privacy Center web adresini ziyaret ederk DART çerezinin kullanmamızı engelleyebilirler.

Özetle: Web sitemizi ziyaret ettiğiniz zamanlarda reklam hizmeti vermek için üçüncü taraf reklam şirketlerini kullanmaktayız. Söz konusu şirketler, bu sitelere ve diğer web sitelerine yaptığınız ziyaretlerden elde ettikleri (adınız, adresiniz, e-posta adresiniz veya telefon numaranız dışındaki) bilgileri ilginizi çekecek ürün ve hizmetlerin reklamını size göstermek için kullanabilir. Bu uygulama hakkında bilgi edinmek için ve söz konusu bilgilerin bu şirketler tarafından kullanılmasını engellemek üzere seçeneklerinizin neler olduğunu öğrenmek isterseniz bu linkten PDF dosyasını indirerek belgenin A ekinden daha fazla bilgiye ulaşabilirsiniz. Pdf Dosyası

asp-dersi.blogspot.com sitesinde uygulanan gizlilik politikası ile ilgili; her türlü soru, görüş ve düşüncelerinizi bize iletişim sayfasından iletebilirsiniz.