|
Java ile uğraşılırda, MySql işin içine katılmaz mı? Yeni nesil uygulamalarda uzun zamandır MySql kullanılmakta olan bir veritabanı sistemi. çoğunlukla hızlılığı ve performansı ile dikkat çekiyor. Açıkçası bugüne kadar bu veritabanını hiç kullanmamıştım. çoğunlukla Microsoft Sql Server’ ı veritabanı sistemi olarak kullanmaktayım. Ancak internette olsun, yazılı kaynaklarda olsun, Java programlama dilinin yanında mutlaka MySql’ e yer verilemekte. Bu belkide bir anlamda, pazar stratejilerinin bir sonucu olsa gerek. Nitekim mysql veritabanı sistemini java platformunda kullanabilmek için gerekli tüm altyapılar kolayca sağlanmış. Neyse, politik davaları ve pazarlama stratejilerini bir kenara bırakıp işimin başına dönsem daha iyi olacak sanırım. Nede olsa bugüne bugün uygulamacıyım.
Bu hafta amacım, Java uygulamalarında, MySql tablolarını kullanabilmekti. Tabi öncelikle bana neler gerektiğini tespit etmem gerekiyordu. Elbette başrol oyuncusu olan MySql veritabanı sisteminin kurulması ilk sırada yer almaktaydı. Diğer taraftan, Java uygulamalarımda MySql tablolarına erişebilmemi sağlayacak bir veritabanı sürücü api’ sinede ihtiyacım vardı. Nitekim, java mysql’ e nasıl bağlanacağını bilemezdi. Onun, veritabanlarına bağlanmak için gösterdiği arayüzleri ve bu arayüzlerdeki gerekli metodları yeniden yazacak bir pakete ihtiyacı vardı. Bu düşünceler eşliğinde hemen internette kısa bir araştırma yaptım ve http://dev.mysql.com/downloads/index.html adresine girdim. Bu adreste MySql ile ilgili aradığım herşey mevcuttu.

MySql için 4.0 verisyonunu indirmeye başladım. Java platformumda geliştireceğim uygulamaların MySql tablolarını kullanabilmesini sağlayacak sürücü api’ si ise, MySql Connector J 3.1 idi. Diğer taraftan, amacım MySql üzerinde sql cümlecikleri ile uğraşmak olmadığı için, Microsoft Sql Server’ daki Enterprise Manager’ a benzer bir arabirimede ihtiyacım vardı. Araştırmamın cevabı, MySql Control Center uygulamasıydı. Elbette MySql’ i kurduktan sonra, sql ifadeleri ile tablolar oluşturabilir, veritabanlarını yönetebilir ve daha pek çok işlemi gerçekleştirebilirdim. Ancak hedefim, bir uygulamacı olarak şu an için tablo oluşturmak gibi işlemlere minimum eforu harcamaktı. Asıl amaç, MySql tablolarını Java uygulamalarında kullanabilmekti. MySql 4.0’ ı yaklaşık olarak 22 megabyte’ lık boyutu ile sistemime indirdim ve kolayca kurdum. Makinemi yeniden başlattığımda, MySql için gerekli windows servisinin otomatik olarak başlatıldığını ve WinMySqlAdmin uygulamasının Tray’ daki ikonunun yeşil ışığının yandığını gördüm. Bu sistem bir yerlerden tanıdık geliyordu. Baş harfi Microsoft Sql Server Service Manager.

Sırada ise, Java platformum ile MySql arasındaki iletişimi koordine edecek ve sağlayacak paketi yüklemek vardı. MySql Connector paketini sisteme kurduktan sonra hemen yardım dosyalarını üstün körü karıştırdım. Aslında tam olarak ne aradığımı bende kestiremiyordum. Derken gözüme CLASSPATH ile başlayan bir paragraf takıldı. Bu paragrafta kısaca, java’ nın bu api’ yi kullanabilmesi için bir takım ayarların yapılası gerektiğinden bahsediliyordu. Yapmam gereken, ilgili jar paketinin bulunduğu klasörü CLASSPATH tanımlamasına eklemekti. Ben paketi D:\mysql-connector-java-3.1.3-beta\mysql-connector-java-3.1.3-beta\ adresine yüklediğim için classpath tanımlamasınıda buna göre yapmam gerekiyordu. Yani sadece jar paketinin olduğu klasör bilgisini Classpath tanımlamasına ekleyecektim.

Tabi Windows XP kullandığım için bu ayarı, My Computer’ e sağ tıklayıp Properties’ den Advanced kısmındaki Environment Variables bölümünden yaptım. Böylece sistemde geliştirdiğim tüm java uygulamaları, MySql sunucusuna bağlanmak için gerekli sürücüyü ve bu sürücünün sağladığı üyeleri kullanabilecekti. Sıra gelmişti o heyecanlı ana. Bakalım, bir java uygulaması içinden, MySql’ e bağlanabileceğim driver’ ı yükleyebilecek miydim? WinMySqlAdmin çalışıyordu. Motorlar hazırdı. Geri sayıma başlamadan önce bir kaç küçük koduda yazmam gerekiyordu elbette. Yoksa roket kalkamadan patlayabilirdi.
import java.sql.DriverManager;
public class SurucuDogrula
{
public static void main(String[] args)
{
try
{
Class.forName("com.mysql.jdbc.Driver").newInstance();
System.out.println("SURUCU YUKLENDI...");
}
catch (Exception hata)
{
System.out.println("SURUCU YUKLENEMEDI..."+hata.getMessage());
}
}
} |
Uygulamayı derleyip çalıştırdım.

çalışıyordu. Driver başarılı bir şekilde o an çalışan proses için yüklenmişti. Artık daha hızlı adımlarla ilerleyebilirdim. Nede olsa işin en önemli kısmı geride kalmıştı. Artık bana bağlanacağım bir veritabanı ve bu veritabanında yer alacak bir tablo gerekliydi. İşte tam bu sırada aklıma, indirdiğim MySql Control Center programı geldi. Bu programı sisteme kurdum ve ta taaaaa. İşte aradığım arabirim. Artık MySql üzerinde kolayca tablo oluşturabilir ve bu tabloya veriler ekleyebilirdim. MySql kurulduğunda, başlangıç olarak Test isimli bir veritabanınıda sisteme yüklemişti. Şimdi bu veritabanı üzerinde bir tablo oluşturacaktım. Personel isimli bir tablo oluşturdum ve bir kaç alan girdim.

Sonra ise, oluşturduğum tabloya bir kaç satır veri girdim. Herşey Enterprise Manager’ dan o kadar tanıdık geliyorduki bu işlemleri yapmam gerçekten çok kısa sürmüştü. Sonuç olarak artık elimde Personel isimli bir MySql tablosu mevcuttu. üstelik bir kaç satır verisi bilem vardı.

Şimdi Java’ yı tekrardan devreye sokmanın sırası gelmişti. İlk yapmak istediğim tabiki MySql sunucusundaki test isimli veritanına bağlanmak ve Personel tablosundaki verileri ekrana yazdırmaktı. Bunu gerçekleştirebilmek amacıyla uygulama kodlarımı aşağıdaki şekilde geliştirdim.
import java.sql.*;
public class SurucuDogrula
{
public static void main(String[] args)
{
try
{
Class.forName("com.mysql.jdbc.Driver").newInstance();
Connection conTest = DriverManager.getConnection("jdbc:mysql://localhost/test");
Statement komut= conTest.createStatement();
ResultSet rs = komut.executeQuery("SELECT * FROM Personel Order By ID");
while(rs.next())
{
System.out.println("ID "+rs.getString("ID"));
System.out.println("ISIM "+rs.getString("AD"));
System.out.println("SOY ISIM "+rs.getString("SOYAD"));
System.out.println("E POSTA "+rs.getString("EPOSTA"));
System.out.println("--------------------------");
}
conTest.close();
}
catch (Exception hata)
{
System.out.println("SURUCU YUKLENEMEDI..."+hata.getMessage());
}
}
} |
Uygulama kodlarında öncekilerden farklı pek bir şey yoktu aslında. Herşeyden önce en önemli fark, veritabanı sürücüsünün MySql için geliştirilmiş olduğu ve bu nedenlede, Connection nesnesi oluşturulurken buna uygun bağlantı katarının girildiğiydi. Yerel sunucuda bulunan test isimli veritabanına bir bağlantı açmak istediğimden, bağlantı ifadesi jdbc:mysql://localhost/test şeklinde olmalıydı. Sonraki adımlarda, sadece tablodaki verileri çekmek için kullanacağım sql sorgusunu çalıştıracak bir Statement nesnesi oluşturmuş ve sorgu sonuçlarını bir ResultSet kümesine alarak, bu kümedeki satırları while döngüsünde gezmiştim. Alan değerlerini getString("Alan adı") tekniği ile alıyordum. Elbetteki döngünün, veri kümesindeki tüm satırlarda gezmesi için next metodu kullanılıyordu. Herşey bittikten sonrada kaynakları geri iade etmek amacıylada, bağlantı nesnesini kapatıyordum.
Sırada satır ekleme, satır silme ve güncelleme gibi temel işlemler vardı. Bu kez ResultSet’ e ait metodlar yerine sql cümleciklerini kullanmaya karar verdim. Statement sınıfı bu işlemler için, executeUpdate isimli bir metod sunuyordu. Bu metod ile, tablo üzerinde yapılacak güncellemeler, satır ekleme işlemleri ve satır silme işlemleri gerçekleştirilebilmekteydi. Tabloya satır girilmesi ile işleme başladım. Bunun için, try bloğu içerisine aşağıdaki kod satırlarını ekledim.
System.out.println("--------------------------");
int eklenen=komut.executeUpdate("INSERT INTO Personel (AD,SOYAD,EPOSTA) VALUES
(’Deneme’,’Deneme’,’Posta1@posta.com’)");
System.out.println(eklenen+" SATIR EKLENDI..."); |
İşin tek esprisi, sql cümleciğinin, Statement sınıfının executeUpdate metodu ile çalıştırılmasıydı. Bu metodun geri dönüş değeri ise int tipindendi ve işlem sonucu etkilenen satır sayısını vermekteydi. Uygulamayı tekrardan derleyip çalıştırdığımda başarılı bir şekilde satırın Personel tablosuna eklenmiş olduğunu gördüm.

Sırada güncelleme işlemi vardı. Tek yapmam gereken sql cümleciğini uygun şekilde değiştirmekti. Burada, Personel tablosundaki tüm satırların EPOSTA alanlarının değerlerini değişitiriyordum. Komutun çalışması sonucu bu işlemden etkilenen satır sayısı ise, executeUpdate metodunun sonucu olarak ortama aktarılmaktaydı.
System.out.println("--------------------------");
int eklenen=komut.executeUpdate("UPDATE Personel SET EPOSTA=’admin@admin.com’");
System.out.println(eklenen+" SATIR GUNCELLENDI..."); |
Silme işlemi de extra bir efor gerektirmemekteydi. Sql diline biraz olsun aşina olduğum için kodda ne tür değişiklik yapmam gerektiğini biliyordum. Burada örnek olarak ID alanı 4 olan satırı tablodan çıkartıyordum.
System.out.println("--------------------------");
int eklenen=komut.executeUpdate("DELETE From Personel WHERE ID=4");
System.out.println(eklenen+" SATIR SILINDI..."); |
Tüm bu işlemler elbetteki MySql sunucusunda yer alan, Personel tablosunu doğrudan etkilemekteydi. Artık MySql sunucusuna ait tablolarıda kullanabilmekteydim. Veritabanları ile ilgili konular tabikide çok geniş ve kapsamlı. Bu konu ile ilgili olarak yazılmış binlerce sayfalık kitaplar olduğunu, bu kitapları gördüğümü ve onlara korku dolu bakışlarla baktığımı söylemek isterim. Ancak temel olarak yapabileceklerimi bilmek bile son derece güzel. Hiç olmassa şimdilik başımın çaresine bakabilirim. Bakalım kahve kokusunun zihnimde oluşturduğu görüntüler, beni başka hangi konulara sürükleyecek.
Kaynak : csharpnedir.com
|