Jdbc ile Veri Tabanına Bağlanmak

JDK 1.1 ”den bu yana JDBC, Java ”nın temel taşı olarak standart
paketle beraber geliyor. Anlamı ise Java Database Connectivity. Mevcut
veritabanlarına kolay erişim için bir mekanizma sağlıyor. Java
programları ile veritabanları arasında sürücüler (drivers) köprü
oluşturmaktadır. Aynı kaynak kod ile birçok veritabanına
ulaşabilirsiniz. Tabii ki bağlantı kurmak istediğiniz veritabanına ait
sürücümüz mevcut olduğu sürece bu geçerlidir.
{mosgoogle}
Veritabanları uzun yıllardır mevcut ve değişik alanlarda kullanılmaktadır. Veritabanlarının sorgulanmasında ve işlenmesinde SQL (Structured Query Language) standart bir dil olarak kabul görmüştür.
Windows dünyasında kabul görmüş olan ODBC (Open Database Connectivity), Java içinde temel alınmış. C”ye uygun olarak tasarlanmış olan ODBC, Java”nın nesneye yönelimli dizaynına uyarlanmıştır.
Basit olarak veritabanına bağlantı adımları :
Program, mevcut veritabanı ile, uygun sürücü vasıtasıyla iletişim kuruyor.
Bir SQL komutu gönderiyor.
Gönderdiği komutun sonucunu alıyor.
Yleride açıklanacak bazı detaylar elbetteki var, fakat veritabanına ulaşılması ve işlem yapılması korkulduğu kadar zor değil.
1 Sürücüler JDBC kütüphanesinin yanında, kullanılacak veritabanına ait sürücünün bulunması gerekiyor. Sürücüler JDBC ile değişik veritabanları arasındaki köprüyü oluşturuyorlar. Genelde veritabanı geliştiricisi, uygun sürücüyü veritabanı ile birlikte sunuyor.
Kullanabileceğiniz mevcut JDBC sürücülerinin listesini aşağıdaki adresten bulabilirsiniz

2 JDBC-ODBC Köprüsü
JDBC ilk duyurulduğunda her veritabanı için değişik JDBC sürücüsünün gerekmesi, destek açısından problemlerle karşılaşılacağını düşündürmüştür. SUN bu durumu görerek, problemleri ortadan kaldırmak için JDBC komutlarını ODBC komutlarına çeviren bir sürücü geliştirdi. Çoğu veritabanı için ODBC sürücüleri mevcut olduğu için, hemen hemen tüm veritabanları ile bağlantı kurmak mümkün olmuştur.
3 Sürücünün Yüklenmesi Javada herşeyin sınıflarla olduğunu biliyoruz. Sürücünün yüklenmesinde de sürücü-sınıfının aktif edilmesinden başka işlem gerekmiyor. Bunu şu komutla yapıyoruz:
Class.forName(“jdbc.odbc.JdbcOdbcDriver”);
Java sınıf yükleyicisi sürücüyü yükler ve Sürücü-Yöneticisi (Driver-Manager) ”nde kendini register eder.
Sürücü bulunamaz ise java.lang.ClassNotFoundException hatası oluşur. Bu hatayı yakalamak ve kontrol etmek için
try{}
catch{}
bloğu kullanılır.
4 Sürücü Yöneticisi (Driver Manager) Bir programın değişik veritabanları ile bağlantı kurması gerektiği durumlarda değişik sürücüler yüklemek gerekir. Bu sürücüleri organize etmek için java Sürücü-Yöneticisini kullanır.
Veritabanına kurulmak istenen bağlantıların tümü sürücü-yöneticisinin üzerinden geçer. Tüm yüklü sürücülerin listesi sürücü-yöneticisinde tutulur 5 Bağlantı Kurma
Sürücü yüklendikten ve sürücü yöneticisinde register edildikten sonra sıra veritabanı ile kurulacak bağlantıya geliyor. Bunun için Sürücü yöneticisi-Sınıfının getConection() metodunu kullanıyoruz.
Connection connection = DriverManager.getConnection (“jdbc:odbc:adresler”, “K.Adi”, “Şifre”);
Veritabanına erişim için iki parametre gönderilmesi gerekiyor Bunlardan birincisi kullanıcı adı (K.Adi), diğeri ise şifredir. Ayrıca veritabanının yerini belirten bir string gönderiliyor. Bu string JDBC-url si oluyor.
Bu metodun döndürdüğü değer Connection nesnesidir. Bu nesne üzerinden veritabanı ile ilgili işlemler yapılır.
6 JDBC – URL
JDBC – Url ile kullanılacak veritabanının tam yeri ve bu veritabanı için kullanılacak sürücü belirleniyor. Kullanımı şu şekildedir :
jdbc::
Yki nokta üst üste ye kadar olan ilk kısım, internet url lerinde olduğu gibi kullanılacak protokolü belirliyor. “http:” veya “ftp:” gibi. Bizim durumumuzda her zaman “jdbc:” olması gerekiyor.
kullanılcak sürücünün ismidir. Ya da değişik sürücüler tarafından kullanılabilen köprünün ismi olabilir. Örneğin SUN ”ın geliştirdiği ODBC-Köprüsü.
kullanılacak veritabanıdır. Buraya yazılacak olan şey tam olarak kullanılacak sürücüye bağlıdır. Çoğu zaman veritabanının adıdır.
7 Sürücülerin Register Edilmesi
Sürücüler farklı şirketler tarafından geliştirildiği ve değişik fonksiyonları yerine getirebildiği için değişik protokoller ortaya çıkıyor. Sürücünün kullanımı isim ile olduğu için, sürücüyü geliştiren ( veya özel bir protokol ) şirketin bunu SUN tarafından register edilmesini sağlamak durumundadır.
8 Sorgulama
Veritabanı ile bağlantı kurulduktan sonra, bu bağlantı sayesinde veritabanına SQL komutları yollanabilir. JDBC gönderilen komutların doğruluğunu kontrol etmez. Programcı göndereceği komutların doğruluğundan ve kullandığı veritabanının bu komutu desteklediğinden emin olması gerekir. Veritabanının gönderilen komutu tanımaması halinde hata oluşur.
JDBC uyumlu logoyu kullanabilmesi için bir veritabanının ve bu veritabanına ait sürücünün ANSI-SQL 2 komutlarını desteklemesi gerekiyor. Standart komutları kullanan bir programcının endişelenmesine mahal kalmıyor.
Prensipte JDBC üç tip SQL komutunu destekliyor. Bunlar Statement (Basit SQL komutları ), PreparedStatement (Komplike SQL komutları) ve CallableStatement (Bir prosedürün çağrılması) dır.
Her tip komut ayrı bir nesne kullanır. Basit bir SQL komutu için örnek :
Statement komut = connection.createStatement();
ResultSet donen = statement.executeQuery
(“SELECT Adi, Adres, TelNo FROM Adresle”);
Ylk satırda Connection nesnesinin createStatement() metodu
kullanılarak basit bir SQL komutu için nesne oluşturuluyor.
Ykinci satırda executeQuery metodu parametre olarak aldığı SQL komutunu veritabanına gönderiyor. Dönen değer ise ResultSet tipindeki donen nesnesine aktarılıyor.
9 Sonucun Alınması
Veritabanına gönderilen SQL komutunun sonucu, sorgulama
kriterine bağlı satırlardan oluşur. Değişik get() metodları ile sonuç satırlarının farklı kolonlarını elde etmek mümkündür. next() metodu ile sonuç satırlarının bir sonrakine atlanabilinir. Son satırda next() metodu kullanılırsa false değeri döner.
while (donen.next())
{ String Adi = donen.getString(“Adi”);
String Adres = donen.getString(“Adres”);
int TelNo = donen.getInt(“TelNo”);
System.out.println(Adi + “, ” + Adres + “, ” + TelNo);
}
Daha öncede bahsedildiği gibi değişik get metodları mevcuttur. Alınacak değerin tipine uygun get metodu kullanılır. Örneğin getByte(), getDouble(), getInt(), getString()
Ystenen veri, java tiplerinden biri olan streams ile de alınabilir. Yalnız bu yol büyük veri bloklarında kullanılır. Örneğin bir sonuç satırını 4 KB ^”lık veri bloğu şeklinde almak için kullanmanız gereken kod aşağıdadır.
byte buffer = new byte[4096];
while(donen.next())
{
Java.io.InputStream fin = donen.getAsciiStream(1);
while(true)
{
int size = fin.read(buffer);
if(size == -1)
break;
output.write(buffer, 0, size);
}
}
10 MYSQL VERYTABANI BA?LANTISI
(MYSQL DATABASE CONNECTION)
Mysql ‘e bağlanabilmek için öncelikle mysql driver(sürücü)’larınu internetten indirmeliyiz.

adresinden Mark Matthews” MySQL JDBC Driver Version 1.1b sürüclerini indirerek /usr/tomcat dizini içine açalım.Dosyaları açtıktan sonra mysql.jar dosyasını CLASSPATH’e eklememiz gerekir.
Export CLASSPATH=$CLASSPATH:/usr/tomcat/mm.mysql/mysql.jar
Artık JDBC bağlantısı ile mysql server’a bağlanıp SELECT,INSERT,UPDATE,DELETE gibi işlemleri gerçekleştirebiliriz.Bu sürücünün en güzel özelliği veritabanı bağlantısı koparsa tekrar bağlanamaya çalışmasıdır.
Bağlanmak için kullanacağımız JAVA kodu aşağıdaki gibi olabilir :
import java.sql.*;
public class LoadDriver
{
public static void main(String[] Args)
{
try {
Class.forName(“org.gjt.mm.mysql.Driver”).newInstance();
}
catch (Exception E) {
System.err.println(“Unable to load driver.”);
E.printStackTrace();
}
…..
Class.forName satırısı ile mysql driver’ını tanıtmış oluyoruz.Şimdi bu driver ile mysql ‘e belli kullanıcı ve şifre ile bir bağlantı (connection) açalım.
Connection C = DriverManager.getConnection(“jdbc:mysql://localhost/altug?user=root&password=”);
Bu bağlantı ile istediğimiz bir sorgulamayı yapabiliriz :
Statement stmt = con.createStatement();
stmt.executeQuery(“select * from sekreter”);
Bu sorgulama sonunda dönen kayıtları bir ResultSet ‘te saklamamız gerek.
ResultSet rs = stmt.executeQuery(“select * from sekreter”);
while (rs.next())
{
System.out.println(RS.getString(1));
}
şimdi bağlantı için kullanabileceğimiz parametreleri inceleyelim :
< /><><><>NameUseDefault ValueUserKullanıcı adı belirtilirYokpasswordŞifreYokautoReconnectVeritabanı bağlantısı koptuğunda tekrar bağlantı kurmak için (true / false )FalsemaxReconnectsEğer autoconnect “enable” ise en fazla kaç kere bağlanması gerektiğini belirtir3initialTimeoutEğer autoconnect “enable” ise bağlantı denemeleri arasındaki süreyi belirtir (saniye)2maxRowsEn fazla kaç sütunun geri döneceğini belirtir.(0 hepsinin döneceği (return) anlamındadır )0useUnicodeshould the driver use Unicode character encodings when handling strings? (true/false)FalseCharacterEncodingif useUnicode is true, what character encoding should the driver use when dealing with strings?None
Kaynak=

CEVAP VER
Lütfen yazınızı giriniz.
Lütfen adınızı buraya giriniz.