Kategori : SQL

Jul 8 2009

ColdFusion MX ve MySQL 4.1 Kurulumu

Bildiğimiz gibi Coldfusion MySQL ile çalışabilmekte ve bu durum da ColdFusion dökümanlarında yer almakta. Ancak belirtilmeyen bir durum ise hangi sürüm MySQL desteğinin olduğu ve farklı sürümlerde ne gibi durumlar yaşandığı.

Blog kurulumu sırasında veritabanı ihtiyaçlarımı karşılamak üzere MySQL 4.1 kurulumu gerçekleştirip ColdFusion ile bağlantı kurmak istediğimde ufak bazı dikkat edilecek noktaların olduğunu gördüm ve sizlerle burda paylaşmak istedim.

Öncelikle neden MySQL sorusuna kısa bir yanıt olarak MySQL'in ücretsiz ve hızlı olması diyebilirim. Bugüne kadar kullanmama nedeni olarak da Unicode desteğinin olmaması ve geliştirdiğin çok dilli projelerde sorunla karşılaşıyor olmam var idi. Ancak MySQL 4.1 sürümü ile birlikte Unicode desteği doğrudan sunulmuş durumda ve bu duruma sanırım en çok sevinenlerden birisi de ben oldum. Gerçi Unicode destekli ve yine ücretsiz olan PostgreSQL veritabanını daha önce bazı projelerde kullanmış olsam da, gerek MS SQL çözümünün var olması gerekse de çözüm üretimi aşamasında kullanılması gerekli olabilen Windows platformunda doğrudan bir PostgreSQL desteğinin olmamasını söyleyebilirim. Artık tamamı ile Unicode destekli ve ücretsiz MySQL sürümü var ve veritabanı ihtiyaçları için farklı bir çözüme gerek kalmadığını söylemek yanlış olmayacaktır.

- ColdFusion MX J2EE standartlarından bir sunucu olması gereği herhangi bir veritabanı ile haberleşmek istediğinde JDBC kütüphanelerini kullanabilmekte. MySQL bağlantısı gerçekleştirmek için de JDBC standartlarını kullanabiliyoruz.

MySQL Connector/J olarak adlandırılan JDBC eklentilerini temin edip açtığımızda karşımıza çıkacak olan dosyalar içerisinden "mysql-connector-java-3.0.16-ga-bin.jar" şeklinde olan dosyayı alıp, normal ColdFusion kurulumu için "$CFMX_HOME/runtime/servers/lib/", JRun destekli ColdFusion kurulumu yada JRun için "$JRUN_HOME/servers/lib/" dizinine kopyalamamız gerekmekte. Yada daha genel olarak "$CFMX_HOME/WEB-INF/lib/" dizinine kopyalamak da yeterli olacaktır.

- Bu kopyalama işlemi sonrası ColdFusion sunucuyu yeniden başlatıyoruz.

- Sonra ColdFusion yönetici sayfasını yeni bir veritabanı eklemek için açıyoruz.

- Veritabanı ekleme sırasında veritabanı tipi olarak "other" seçeneğini seçiyoruz.

CFAdmin - MySQL

- JDBC URL alanı için "jdbc:mysql://[sunucu]:[port]/[veritabanıadı]" olarak belirtiyoruz.

- Driver Class alanı için "com.mysql.jdbc.Driver" olarak belirtiyoruz ve veritabanı kaydını gerçekleştiriyoruz.

CFAdmin - MySQL

Bu işlem sonrası ColdFusion sunucusu sorunsuz bir şekilde MySQL veritabanı ile anlaşacaktır.

Yeni veritabanımız hayırlı olsun. :)

0 yorum - Gönderen : Oğuz Demirkapı (9:51 AM) - Kategori : Coldfusion | SQL

Jul 8 2009

ColdFusion MX ve PostgreSQL 8 Kurulumu

ColdFusion MX her ne kadar doğrudan bir destek sunmasa da PostgreSQL ile sorunsuz bir şekilde çalışabilmekte. Ancak PostgreSQL 8 sürümünün duyrulması ile sunulan Windows tabanlı PostgreSQL veritabanı sunucusu, *nix dünyasında olduğu gibi Windows kullanıcıları için de ciddi bir alternatif oluşturacak gibi görünmekte.

Biz de tam bu duyrum sonrası PostgreSQL 8 ile ColdFusion MX kurulumunun nasıl olabileceğinden bahsedelim.

Öncelikle PostgreSQL 8 kurulumunu gerçekleştirmek gerekmekte. Kurulum sırasında PostgreSQL için bir kullanıcı yaratılması ve bu kullanıcının daha sonra ColdFusion tanımlarında kullanılacağını unutmamak gerekiyor. Kurulum sırasında da özellikle JDBC sürücülerini aktif olarak seçmek gerekmekte.

Daha sonra ColdFusion MX ile PostgreSQL arasındaki bağlantıyı kuracak olan JDBC bağlantısını gerçekleştirmek gerekmekte. PostgreSQL kurulumu sonrası ana dizin (C:\Program Files\PostgreSQL\8.0) altında bulunan "JDBC" dizini içerisine gerekli dosyalar yaratılmakta. Bu JAR dosyalarını ColdFusion tarafından tanınması iki yöntemle olanaklı. Ya bu dosyaları "$CFMX_HOME/WEB-INF/lib/" dizinine kopyalamak yada ColdFusion yönetici sayfalarında "Java and JVM Settings" bölümünde bu dosyaların olduğu alanı "ColdFusion Class Path" bölümüne eklemek. Tabi bu işlemlerden sonra ColdFusion sunucunun yeniden başlatılması gerekmekte.

Daha sonra ColdFusion yönetici sayfalarında yeni veritabanı eklemek için "other" alternatifini seçiyoruz.

PostgreSQL

JDBC alanı için "jdbc:postgresql://[sunucu]:[port]/[veritabanıadı]", "driver class" alanı için "org.postgresql.Driver" olarak belirtiyoruz ve veritabanı kaydını gerçekleştiriyoruz.

PostgreSQL

Bu işlem sonrası ColdFusion sunucusu sorunsuz bir şekilde PostgreSQL veritabanı ile sorunsuz şekilde çalışacaktır.

Genel olarak kurulum adımları benzer olmasına karşın *nix tabanına özgü kurulum için de dikkat edilecek noktaları ayrıca belirteceğimi de hatırlatmak isterim.

0 yorum - Gönderen : Oğuz Demirkapı (9:44 AM) - Kategori : Coldfusion | SQL

Jul 8 2009

Unicode Destekli Access Veritabanı İle Kodlamada Dikkat

ColdFusion ile çalışırken veritabanı çözümü olarak MS Access seçilmiş ise dikkat edilecek önemli bir ayrıntıyı tekrar hatırlatmak istedim.

6 Aralık 2003 tarihli blog kaydını sizlere tekrar iletiyorum.

------------------------------------------------------------

Bir süre önce yaptığım bir projenin ColdFusion MX 6.1 güncellemesi sonrasında hata çıkardığına dair bir mail aldım. Proje geliştirilme aşamasında ColdFusion 5 ve Access kullanılmış idi. Ancak projenin ColdFusion MX 6.1 sunucuya taşınmasından sonra sorguların sonuçları hatalı olarak boş gelmekte idi. Sorunun nedenini incelerken normal Access sürücüsü ve unicode destekli Access sürücüyü denediğimde, normal olanda çalışmakta ancak unicode destekli sürücü ile sorun oluşmakta idi.

Sorunun nedeninin sorgularda kullanılan karşılaştırmalar sırasında "boolean" olan alanlar için kullanılan tanımdan kaynaklandığını buldum ve sorguları değiştirerek sorunu hallettim.

Sorgularda;

WHERE urunler.isaktif = 1

yerine

WHERE urunler.isaktif = TRUE

kullanarak soruna neden olan durumu ortadan kaldırabiliyoruz.

Yada daha genel bir çözüm olarak aşağıdaki yazımı kullanabiliriz.

WHERE urunler.isaktif = <cfqueryparam cfsqltype="CF_SQL_BIT" value="1">

------------------------------------------------------------

O günlerde ColdFusion MX 6.x için belirttiğim durum ColdFusion MX 7 için de geçerliliğini korumakta. Durum Macromedia'dan çok Macromedia'nın Access veritabanlarına ulaşmak üzere kullandığı JDBC bağlantı yazılımını üreten DataDirect sürücülerinden kaynaklanmakta.

0 yorum - Gönderen : Oğuz Demirkapı (9:42 AM) - Kategori : Coldfusion | SQL

Jul 8 2009

ColdFusion & Access & Unicode

ColdFusion MX ilk çıktığı zamanlar MS Access ile çalışırken Unicode uyumsuzluğu bulunmaktaydı. "RedSky (6.1)" sürümü ile eklenen yeni bir sürücü ile Access veritabanı için doğrudan Unicode desteğı sunularak sorun halledildi.

Ancak var olan sürücü ile yine de hala bazı sorunlar oluşabilmekte. Örnek olarak yine bu alanda belirttiğim "boolean" veriler için 1 ve 0 yerine doğrudan "True" yada "False" kullanmak gerekmekte.

Bu tarz ufak sorunlara genel bir çözüm için Macromedia bir "Technote" yayınlamış durumda.

http://www.macromedia.com/go/2d2a7a19 adresi ile ilgili dökümana ulaşıp, anlatılan yöntem ile "jadoZoom" JDBC sürücüsünü kurarak bu tarz ufak sorunlara çözüm bulunabilir.

0 yorum - Gönderen : Oğuz Demirkapı (9:39 AM) - Kategori : Coldfusion | SQL

Jul 4 2009

Stored Procedure

Stored procedure veritabanı içerisinde oluşturulan,derlenen ve yine orda çalıştırılan sql komutlarıdır.Tablolardan bağımsız olarak çalışır içerisine yazacağınız kod satırlarına göre bir çok tabloda kullanabilirsiniz. SP veritabanının içerisinde derlendiği için sunucuyu yormaz, veritabanının daha hızlı çalışmasını sağlar böylece performans artışı elde edersiniz. SP 'nin avantajlarından bahsedebiliriz ama buraya kadar yazdıklarımı anladıysanız daha fazlasına gerek yok diye düşünüyorum..Örnek bir uygulama ile teoriyi pratiğe dökelim.

siparis adında bir tablo oluşturalım ve bu tabloya veri kaydetmesi için bir tane de SP.Yapacağımız şey basit SP çağrıldığında ona gönderilen verileri alıp siparis tablosuna kaydedecek.

Devamı ...

2 yorum - Gönderen : Candan Bilecen (11:30 AM) - Kategori : SQL

Jul 4 2009

Trigger

Trigger nedir sorusunu bir örnek ile açıklayabileceğimi düşünüyorum. Her ne kadar store procedureler ile karıştırılsalarda triggerlar database üzerinde bir işlem yapıldığında otomatik olarak store p. ler ise çağrıldığında çalışır bir örnek uygulama yapalım ve senaryosu şöyle olsun...

candanUrun tablomuz ve candanSiparis tablolarımız olsun sipariş tablomuza biri ürün girdiği anda siparis edilen adeti ürün tablomuzdaki toplam adetten çıkaralım.Görüldüğü gibi triggerlar bu tipte sürekli ve otomatik yapılması gereken işleri kendileri hallediyorlar bu işlemler sadece insert için değil update,delete,create,drop,alter işlemleri içinde kullanılabilir yani bir tablonun silinmesini yasaklayabilir ve silinmeye çalışıldığı anda bir uyarı gönderebilirsiniz lafı daha fazla uzatmadan örneğimize geçelim..

Devamı ...

0 yorum - Gönderen : Candan Bilecen (8:43 AM) - Kategori : SQL

Jul 3 2009

İki Tarih Arasındaki Fark

Girilen iki tarih arasındaki farkı datediff fonksiyonu yardımıyla hesaplıyoruz.

set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go

Devamı ...

6 yorum - Gönderen : Candan Bilecen (4:22 PM) - Kategori : SQL