Jdbc

CorsaiR

Emektar
27 Ara 2005
1,228
18
Çekirdekten
JDBC- Veri Tabanına Bağlantı
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ünüz mevcut olduğu sürece bu geçerlidir.

Veritabanları on yıllardır mevcut ve değişik alanlarda kullanılmaktadır. Veritabanlarının sorgulanmasında ve işlenmesinde SQL (Structured Query Language) satndart 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.

İleride açıklanacak bazı detaylar elbetteki var, fakat veritabanına ulaşılması ve işlem yapılması korkulduğu kadar zor değil.
 

CorsaiR

Emektar
27 Ara 2005
1,228
18
Çekirdekten
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şğıdaki adresten bulabilirsiniz

http://java.sun.com/products/jdbc/jdbc.drivers.php3

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.

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.

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.
 

CorsaiR

Emektar
27 Ara 2005
1,228
18
Çekirdekten
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:eek:dbc: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.

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:<sürücü>:<veritabanı>

İki 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.
<sürücü> 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ü.
<veritabanı> 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.

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.
 

CorsaiR

Emektar
27 Ara 2005
1,228
18
Çekirdekten
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.

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");


İlk satırda Connection nesnesinin createStatement() metodu kullanılarak basit bir SQL komutu için nesne oluşturuluyor.
İkinci 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.

 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.