March 25th, 2008 Can HANHAN
Son günlerde Javascript ile client-side programlar hazırlamakla uğraşmaktayım. Hazırladığım sistemin genel özelliği offline ve online olarak çalışabilmesi. Adobe AIR sayesinde hazırladığım yapıda sunucumdaki programım SQL Server’daki verileri işleyip istemciye JSON olarak gönderiyor. Javascript’de kendine düşen işlemleri gerçekleştiriyor. Buraya kadar herşey normal bir AJAX uygulaması yapısında. Ancak Adobe AIR’in bize sağladığı “üstün yetkiler” kullanıcının bilgisayarında bir veritabanı daha oluşturabilmemizi sağlıyor. Böylece XMLHTTP için hazırladığım fonksiyonlarıma yaptığım ufak bir ekleme ile diğer kodlarımda hiç bir değişiklik yapmadan programın offline çalışabilmesini de sağlıyor. Genel mantık şu şekilde: Javascript kullanıcıdan veriyi alıyor, XMLHTTP fonksiyonlarım ile sunucuya gönderiyor ve yanıt bekliyor. XMLHTTP fonksiyonum ise kendisine veri geldiğinde öncelikle sunucuya erişip erişemediğini kontrol ediyor. Erişemiyorsa yerel veritabanına kaydediyor. Yerel veritabanında ayrıca verinin senkronize edilip edilmediği ve ne zaman edildiği tutuluyor. Uygulama ilk internet erişimi kazandığında bu verilerin hashlarını kontrol ediyor ve senkronizasyon zamanlarına göre birbirlerini güncelliyorlar. Bu noktada ortaya bir problem çıkıyor. Web uygulamasında birden fazla kişinin yaptığı farklı güncellemelerin çeşitli uyum sorunlarına neden olacabileceği ortada. Özellikle durum finansal konular ile ilgiliyse. Bir müşteriye ait bilgiler, rakamlar bir operatör tarafından doğru zamanda girilmezse ya da sistem tarafından algılanamazsa diğer operatörlerin yaptığı işlemler bir hataya neden olabilir. Bu durum ortaya senkronizasyon işlemlerinde yapılan değişiklerin kayıt edilmesi ve revizyon tarihinin tutulması zorunluluğunu çıkartır. Yani bir operatör 12.02.2008 tarihinde saat 14:14′de offline işlem yapmış varsayalım. Başka bir operatör aynı veri için 12.02.2008 tarihinde saat 14:15′de online ya da offline bir işlem yapmış ise bu diğer operatörün işlemi ile çakışabilir. Bu durumda iki operatörün de durum hakkında bilgilenmesi gerekmektedir. İlk operatörümüzün aynı gün saat 15:00′da online duruma geçtip ve senkronizasyon yaptığında sistemin şu şekilde bir uyarıyı iki operatöre de göndermesi gerekmektedir.
12.02.2008 tarihinde saat 14:14′de Operatör A tarafından ‘Müşteri A hesabına 20 YTL eklenmiştir’. (Offline)
12.02.2008 tarihinde saat 14:15′de Operatör B tarafından ‘Müşteri A hesabına 30 YTL eklenmiştir.’ (Online, Revizyon 1)
12.02.2008 tarihinde saat 15:00′da Operatör A tarafından veri senkronizasyonu yapılmıştır. (Revizyon 2)
12.02.2008 tarihinde saat 15:00′da ‘Müşteri A hesabında toplam 50 YTL bulunmaktadır.’ Bu bilginin doğruluğunu onaylıyor musunuz?
Bu durumda operatörlerden ikisinin de bilginin doğruluğunu onaylaması gerekmektedir. Onaylanmadığı durumda gerekli düzenlemelerin operatörlerden biri tarafından yapılması ve iki operatörün de onay vermesi gerekmektedir. İki operatör de onay verene kadar süreç bu şekilde ilerleyecektir.
Sistem en büyük dezavantajı yukarıda belirttiğim gibi kritik verilerin doğruluğunun kesin olarak sağlanamaması. Gerçek hayattan şöyle bir örnek verebiliriz: Firmanız müşterilenizin kredi kartlarından aylık olarak düzenli çekim yapıyor. Bir müşterinizin aylık ödeme zamanı geldiğinde Operatör A, kredi kartı çekim işlemini gerçekleştiriyor. Ancak internetindeki bir problem nedeniyle online olamıyor. Operatör B ise sisteme giriyor ve müşterinin ödeme zamanının geldiğini görüyor. Tekrar çekim yapıyor. Operatör A, online olup senkronizasyon yaptığında iki operatör de mutlaka bu durumdan haberdar olmalıdır. Böylece müşterinin ikinci çekim işlemi iptal edilmelidir.
Tutarlılık kontrol mekanizmalarının haricinde, kritik yerlerdeki işlemler için offline işlem yapmaya yasak konulabilir. Ancak bu sistemin esnekliğini kaybetmesine de neden olacaktır.
Burada önemli olan bir nokta da sistemin kendini sürekli kontrol edecek bir başka sisteme ihtiyaç duymasıdır. Yani sunucumuzda mutlaka bir alıcı-verici ve bir de kontrol mekanizması aktif olmalıdır.
Posted in Programlama | No Comments »
February 18th, 2008 Can HANHAN
Anadolu Üniversitesi’nde verdiğimiz Web Programlama Eğitimi’nde yaptığımız örnek uygulamanın kodlarına aşağıdaki adresten ulaşabilirsiniz. Ayrıca ASP ve SQL konusunda kendini geliştirmek isteyenlere aşağıdaki diğer iki bağlantıda bulunan kitapçıkları da tavsiye ederim.
http://www.finarfin.net/wp-content/uploads/webprogramlama.zip (Bu dosya sunucudaki disk problemi nedeniyle silinmiştir.)
http://www.aspindir.com/Goster/3545 (Sql Kitapçığı)
http://www.aspindir.com/Goster/2880 (Asp Kitapçığı)
http://www.aspindir.com/Goster/2879 (Asp Kitapçığı- Hakkı ÖCAL)
Posted in Etkinlikler, Programlama | No Comments »
February 18th, 2008 Can HANHAN
Bu yazıyı okumadan önce http://www.finarfin.net/?p=20 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.
Posted in Programlama | No Comments »
February 18th, 2008 Can HANHAN
Genel olarak ADO sınıfını ve içindekileri inceleyeceğiz. Şöyle de söyleyebiliriz ki yazımız sadece veritabanına bağlanıp, veri almak, yazmak, silmek ile ilgili olmayacaktır. Bu nedenle ASP ve Veritabanı işlemlerine önceden bir giriş yapmış olmanız gerekmektedir.Öncelikle yazımızda geçicek terimlerimizle başlayalım;
- ADO nedir?
ADO (ActiveX Data Object), Microsoft´un tüm Windows tabanlı programlama dillerinde programcıların veritabanı işlemlerini kolay, hızlı ve güvenli bir şekilde yapması için oluşturduğu bir arayüzdür.
- DAO nedir?
DAO (Data Access Object), ise yine Microsft´un çıkarttığı bir veritabanı teknolojisidir. ADO´dan önce çıkmış ve uzun süre kullanılmıştır. Ancak temel olarak JET teknolojisini kullanır.
- DAO ile ADO arasındaki fark nedir?
ADO, sonradan yapılmış (yeni model) bir teknoloji olduğundan dolayı zaten bir adım öndedir. Ancak ADO yapı olarak ODBC´ye benzemektedir. Jet-tabanlı bir yapıda olmaması onun neredeyse tüm veritabanları ile uyumlu çalışmasını sağlar. Ancak DAO bu konuda sınırlı kalmıştır. (Access, FoxPro vs.) Ayrıca ADO, OOP konusunda da DAO´dan ileridedir.
- ActiveX nedir?
Yine Microsoft´un oluşturduğu ve nesnelerin programlama dillerinden bağımsız olarak çalışabilmesini sağlayan bir teknolojidir. Yani C++ ile yazılan bir DLL´in ASP´den kullanılabilmesi gibi bir örnek verilebilir buna.
- ADO´yu nasıl yükleyebilirim?
ADO zaten IIS ile birlikte yüklenmektedir. Hatta yeni işletim sistemlerinde direk kendisi yüklü gelmektedir. Ancak ADO´yu güncellemek isterseniz http://download.microsoft.com adresinden MDAC´ın son versiyonunu yükleyebilirsiniz. Bu yazı dizisi MDAC 2.8 baz alınarak hazırlanmıştır.
Kısaca işleyeceğmiz konulara değinirsek; kullanım sıramıza göre bir öncelik belirleyeceğiz. Yani öncelikle “Connection” nesnesini işleyecek; ardından “Recordset” nesnesine geçeceğiz. “Field” nesnesi ile devam edip; “Command” ve “Parameter” nesnelerine geçeceğiz son olarak ise “Stream” nesnesini işleyecek ve nesne tanıtımımızı bitireceğiz. Ancak yazı dizimize “ADO ve Hatalar” yazısı ile devam edicek ve “Error” nesnesini işleyeceğiz.
Posted in Programlama | No Comments »
February 18th, 2008 Can HANHAN
Mesela bir forum yaptığınızı ele alalım; üyelik sisteminde hangi kullanıcının hangi konuları okuduğunu tutmak istiyorsunuz ama tablo açıp, her okuma işleminde o tabloya kayıt yapmak istemiyorsunuz. Bu yüzden tüm okunan idleri “fldOkuduklari” gibi bir alana kaydettiriyorsunuz. Ancak bunları listelemek istediğinizde bir yığın gereksiz ASP kodu kullanmak zorunda kalıyorsunuz. İşte bu gibi durumlarda “Split” fonksiyonunu kullanabilirsiniz.
Öncelikle aşağıdaki kodu “User-defined function” olarak kaydetmeniz gerekiyor.
KOD:
CREATE FUNCTION dbo.Split(@STRING nvarchar(4000), @Delimiter char(1))
RETURNS @Results TABLE (Items nvarchar(4000))
AS
BEGIN
DECLARE @INDEX INT
DECLARE @SLICE nvarchar(4000)
SELECT @INDEX = 1
IF @STRING IS NULL RETURN
WHILE @INDEX !=0
BEGIN
SELECT @INDEX = CHARINDEX(@Delimiter,@STRING)
IF @INDEX !=0
SELECT @SLICE = RTRIM(LTRIM(LEFT(@STRING,@INDEX - 1)))
ELSE
SELECT @SLICE = RTRIM(LTRIM(@STRING))
INSERT INTO @Results(Items) VALUES(@SLICE)
SELECT @STRING = RIGHT(@STRING,LEN(@STRING) - @INDEX)
IF LEN(@STRING) = 0 BREAK
END
RETURN
END
Daha sonra SQL cümleciğimizi oluşturuyoruz.
KOD:
<%
strSQL = “SELECT fldBaslik, fldTarih FROM tblKonular WHERE fldAuto IN dbo.Split((SELECT fldOkuduklari FROM tblUyeler WHERE fldUyeID = ” & Session(”UyeID”) & “), ´,´)”
%>
Artık kayıtsetimiz ile çok rahatlıkla listeleme işlemini yapabilirsiniz.
Posted in Programlama | No Comments »
February 18th, 2008 Can HANHAN
SQL’de bazı fonksiyonlar bulunmaktadır;
SUM, DISTINCT, LEFT, RIGHT, LTRIM, TRIM , RTRIM, AVG, COUNT
SUM = Bir alanın tüm kayıtlar toplamını verir,
DISTINCT = Farklı Kayıtları alır
LEFT = Alanın başından belirli sayıda karakterden oluşan veri alır
RIGHT = Alanın sonundan almaya başlar.
LTRIM = Bir alanın başındaki boşlukları siler
TRIM= Bir alanın başındaki ve sonundaki boşlukları siler.
RTRIM = Sonundaki boşlukları siler
AVG = Bir sayı alanının ortalamasını alır
COUNT = Kayıtlar toplamını alır.
SELECT SUM(fldYas) As fldYasToplam FROM tblUyeler
SELECT DISTINCT(fldIsim) FROM tblUyeler
SELECT Left(fldIsim, 3) As fldIsimUc FROM tblUyeler
SELECT Right(fldIsim, 3) As fldIsimSonUc FROM tblUyeler
SELECT LTrim(fldKullaniciAdi) As fldKullaniciAdiSol FROM tblUyeler
SELECT LTrim(fldKullaniciAdi) As fldKullaniciAdiHepsi FROM tblUyeler
SELECT RTrim(fldKullaniciAdi) As fldKullaniciAdiSag FROM tblUyeler
SELECT AVG(fldYas) As fldYasOrtalamasi FROM tblUyeler
SELECT COUNT(*) As fldToplam FROM tblUyeler
Bu komutlar SQL de böyle yazılıyor işte. Recordset ile
objRS(”As_densonrayazilankisim”) veya objRS(0) çeklinde çağrılabilirler.
Posted in Programlama | No Comments »
February 18th, 2008 Can HANHAN
Diğer derslerde SQL’ler anlaşlılabilirlik amacıyla satır satır yazılmıştır. ASP ile kullanımında;
<%
strSQL = " UPDATE tblTablo SET fldField = 'Veri' WHERE fldField = 'Koşul';"
objConn.Execute(strSQL)
%>
şeklinde kullanılmalıdır.
INSERT, UPDATE ve DELETE komutları sadece objConn.Execute(strSQL) komutu ile kullanılabilir. Ancak SELECT mutlaka kayıtseti ile kullanılmalıdır.
INSERT, UPDATE ve DELETE komutlarının sonunda ; bulunmalıdır. SELECT’de bulunursa hata alınır.
Ayrıca SQL’de bunların haricinde ALTER TABLE, CREATE TABLE, DROP TABLE gibi komutlar da bulunmaktadır. Bunları da ileride işleyebiliriz.
Kayıtseti ile kullanabileceğiniz bir diğer komut ise RecordCount. RecordCount ile kayıt sayısını alabiliriz. Ancak burda dikkat etmemiz gereken yer KayıtSetinin en az 1,3 Cursorleri ile açılması gerektiğidir.
<%
SET objConn = Server.CreateObject("ADODB.Connection")
' Veritabanına bağlanmak için gerekli nesneyi yarattık.
strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & Server.MapPath("db/deneme.mdb") & ";"
'Bağlantı komutumuzu yazdık.objConn.Open strConn 'Bağlanma komutunu verdik
strSQL = "SELECT * FROM tblTablo ORDER BY fldIsim ASC"
'SELECT veritabanından veri almak için kullanılan bir SQL komutudur.
'* ile tüm alanları almasını belirtik.
'İsterseniz tüm alanları yazabilirsiniz; fldAuto, fldIsim, fldTelefon gibi.
'FROM hangi tablodan veri alacağımızı belirlemeye yarar.
'tblTablo ile tablo adımızı da belirttik
'ORDER BY sıralamayı belirlememizi sağlar.
'fldIsim sıralamanın fldIsim alanına bağlı olmasını sağlıyor.
'ASC ile sıralama türü. ASC olursa A-Z'ye (Yükselen)
'DESC olursa Z-A'ya (Azalan) sıralama yapmış oluruz.
SET objRS = Server.CreateObject("ADODB.Recordset") ' Kayıt setini oluşturduk.
objRS.Open strSQL, objConn, 1, 3
'.Open komutu ile bağlantı açmasını istiyoruz.
'strSQL ile SQL Sorgusunu belirliyoruz.
'objConn ile Bağlantı nesnesini belirliyoruz.
'1, 3 ise cursor adını verdiğimiz olay. Kayıt setinin özelliklerini belirliyor.
Do UNTIL objRS.Eof 'Kayıtların sonuna kadar veri almasını istiyoruz.
Response.Write objRS("fldIsim") & " kişisinin telefonu : " & objRS("fldTelefon")
'Kayıtlarımızı objRS("Alanadi") şeklinde alıyoruz.
objRS.MoveNext 'Bir sonraki kayıta geçmesini istiyoruz."
Loop 'Döngünün başa dönmesini ve devam etmesini istiyoruz.
Response.Write objRS.RecordCount & " telefon kaydı bulunmuştur."
objRS.Close 'Kayıt setimizi kapatıyoruz.
SET objRS = Nothing 'KAyıt setini temizliyoruz.
objConn.Close 'Bağlantıyı kesiyoruz.
SET objConn = Nothing 'Bağlantı nesnesini kapıyoruz.
%>
Posted in Programlama | No Comments »
February 18th, 2008 Can HANHAN
INSERT kayıt eklemeye yarar;
INSERT INTO tblTablo (fldField, fldField2, fldField3)
VALUES ('Veri', 'Veri2', 'Veri3')
INSERT INTO tblTablo (fldField, fldField2, fldField3) : Hangi tablo ve o tablonun içindeki hangi alanlara (field) veri girileceğini belirliyoruz.
VALUES (’Veri’, ‘Veri2′, ‘Veri3′); Ekleyeceğimiz verileri belirlememizi sağlar
SQL ile yaptığımız işi kayıt seti ile de yapabiliyoruz;
<%
SET objConn = Server.CreateObject("ADODB.Connection")
strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & Server.MapPath("db/deneme.mdb") & ";"
objConn.Open strConn
strSQL = "SELECT * FROM tblTablo WHERE fldField = 'Veri'"
SET objRS = Server.CreateObject("ADODB.Recordset")
objRS.Open strSQL, objConn, 1, 3
objRS.AddNew ' Yeni kayıt eklemesini belirtiyorux.
objRS("fldField") = "Veri" 'Verileri belirtiyoruz yapıyoruz.
objRS("fldField2") = "Veri2"
objRS("fldField3") = "Veri3"
objRS.Update 'Güncelleme komutu veriyoruz.
'Gördüğünüz gibi Kayıt eklerken de bir nevi güncelleme yapıyoruz.
objRS.Close 'Kayıt setimizi kapatıyoruz.
SET objRS = Nothing 'KAyıt setini temizliyoruz.
objConn.Close 'Bağlantıyı kesiyoruz.
SET objConn = Nothing 'Bağlantı nesnesini kapıyoruz.
%>
Posted in Programlama | No Comments »