Java ve JDBC ile Veritabanı Bağlantısı-1
Bu yazımızda Java uygulamalarında SQL veritabanı kullanımını inceleyeceğiz. Öncelikle belirtmeliyim ki bu yazı ileri seviye java uygulamalarını kapsamaktadır. Java diline yeni başlayanlar için bu yazıdaki bilgiler anlaşılması zor olabilir. Bu yazıyı yazmamdaki en önemli sebep Java uygulalarında veritabanı bağlantısının biraz sancılı bir süreç olmasıdır.
Java ile bir veritabanı uygulaması geliştirmeden önce bilgisayarımızda JDK kurulumu olduğundan emin olmalıyız. JDK ile uyumlu çalışabilecek bir Netbeans kurulumu da bulunması gerekenler arasında.
JDBC Nedir?
JDBC (Java Database Connectivity API) bize Java uygulamamızdan veritabanı sistemine erişebileceğimiz kontrollü bir kapı sunar. Veritabanı sistemini yönetmek ve belirli işlemleri yerine getirmek için gerekli rutinleri sağlıklı şekilde işletir. JDBC API iki dosya içerir. java.sql ve javax.sql , Java uygulamalarımızda veritabanı ile işlem yapmak için gerekli sınıfları bize sağlar. Her veritabanı sistemi için ayrı bir sürücü yüklenmesi gerekebilir. Netbeans kurulumu sayesinde Mysql, JavaDB, PostgreSQL , gibi yaygın kullanılan veritabanlarına bağlantılar için sürücüler hazır yüklenmiş halde gelmektedir. Bir Java uygulamasının veritabanında işlem yapması için gerekli prosedürler şöyledir:
- Gerekli JDBC sürücüsünü yükle(load)
- Veritabanına bir bağlantı aç.
- SQL İfadesini yarat. (create,select, insert, update, delete ifadeleri kısaca CRUD olarak isimlendirilir.)
- SQL İfadesini çalıştır.(Execution)
- ResultSet’ten verileri getir.
Uygulamamızda JavaDB gibi gömülü bir veritabanı sistemi kullanabileceğimiz gibi MySQL gibi servis tabanlı bir veritabanına da bağlanabiliriz. Servis tabanlı veritabanı sistemleri ile gömülü sistemler arasındaki seçim genellikle uygulamanın şekline göre değişmektedir. Genellikle yoğun veritabanı işlemleri yapacak ve büyük veri depolayacak uygulamalar için servis tabanlı veritabanı sistemleri kullanılmaktadır. Mysql terabytelara varan düzeyde veriyi tek bir örnek üzerinde yönetebilecek düzeyde başarılı bir veritabanı sistemidir.
Uygulamamızda kullanmak üzere bir mysql servisi kurduktan sonra (www.mysql.com sitesinden şu anki sürümü olan MySql 5.1 indirilip kurabilirsiniz.) Mysql veritabanımızı oluşturuyoruz. Mysql işlemlerini kolaylaştırması açısından web sitesindeki MySQL GUI Tools(grafikli yönetim araçları)’nı indirebilirsiniz. MySQL kurulumu yapmak ve araçlarını kullanmak ayrı bir makale konusu olabilirdi fakat şimdilik bize gerekli olan kısmı ile ilgilenelim. Java uygulamamızda kullanacağımız veritabanını oluşturarak işe başlayalım. MySql Administrator aracını kullanarak yeni bir scheme oluşturacağız ve burada verilerimizi tutacak olan bir tablo tanımlayacağız.
MySql Servisine bağlandıktan sonra yandaki menuden Catalogs butonuna tıkladığımızda server üzerinde hizmet verilen veritabanlarını görürüz.
Yeni bir Scheme tanımlamak için sol alt kösede veritabanı dosyalarının görüntülendiği alanda sağ tıklayarak Create New Scheme ile yeni bir veritabanı planı oluşturabiliriz. (Veritabanlarına göre şema(plan), tablo, kullanıcı, veritabanı gibi kavramlar değişiklik gösterebilmektedir. MySql için Scheme oluşturmak yeni bir veritabanı dosyası tanımlamakla aynı anlama gelmektedir. Oracle için ise veritabanı dosyası tektir, scheme ile veritabanı değişik kullanıcıların hizmetine sunulur.) Veritabanına isim olarak javaVeri ismini verdim. javaVeri veritabanımda oluşturduğum users tablosunu ise şöyle tanımladım.
Veri sütunlarının ve tablonun isminin neden ingilizce verildiği bir tartışma konusu olabilir fakat türkçenin sondan eklemeli bir dil olmasını göz önünde bulundurarak en basit durumda bile veri sütununun ismi “kullaniciadi” mıydı yoksa “kullaniciad” mıydı gibi karışıklıklara ve zaman kaybına sebep olduğu için böyle bir yazım tarzını benimsemiş bulunmaktayım. Tabloyu tasarladıktan sonra Apply Changes(Değişilikleri Uygula) ile tablomuzu oluşturalım.. Administrator aracı ile işimiz bitti gibi. Şimdi de uygulamamızda kullanmak için birkaç veri girdisi oluşturalım.
Mysql Command line Client aracını kullanarak şifremizi girerek giriş yaptıktan sonra şu satırları sırasıyla yazalım;
connect javaVeri; insert into users (username, password, realname, address) values (’onur’, ‘12345’, ‘mehmet onur atci’, ‘adana balcali’); insert into users (username, password, realname, address) values (’hasan’, ‘1234’, ‘hasan agmaz’, ‘adana t. ozal’);
Bu işlemlerden sonra veritabanı ile ilgili çalışma gereksinimlerimizi karşılamış olduk.Veritabanı ile işimizi bitirdiğimize göre tekrar uygulamaya geçebiliriz.
Uygulamada mysql veritabanı kullanacağımız için JDBC- mysql java connector kütüphanelerini indirmemiz ve projemizde kullanılabilir şekilde konumlandırmamız gerekmektedir. Bu linkte bu yazıyı yazarken dağıtılan güncel MySQL/J connectorü bulabilirsiniz. Bağlantıdaki dosyayı indirdikten sonra arşivi açınca içinde bir .jar dosyası , src ve doc klasörleri olacaktır. .jar bizim uygulamalarda kullanacağımız sürücünün derlenmiş versiyonudur. doc klasörü altında dökümantasyonu ve src klasörü altında da kaynak kodunu bulabilirsiniz. Ben uygulamamda kolaylık olması açısından arşiv içindeki .jar dosyasını C:\Sun\jdbc\ klasörü içine yerleştirdim. Şimdi Netbeans da yeni bir Java Uygulaması oluşturalım ve ismine MysqlApp verelim. Uygulamamızda Netbeans bir ana sınıf oluşturacaktır.
Bu alanda kullanmak istediğimiz Mysql Connector dosyasını Libraries klasörüne sağ tıklayarak Add Jar/Folder seçeneği ile C:\Sun\jdbc altındaki mysql-connector-java-5.1.10-bin.jar dosyasını eklemeliyiz. Artık java kodlarımız arasında jdbc mysql sürücüsüne ihtiyacımız olduğunda doğrudan kullanabileceğiz.
Main.java sınıfındaki kodlarımızı mysql bağlantımızı kullanacak şekilde düzenleyelim. Öncelikle paket tanımlamasından sonra
import java.sql.*;
satırını ekleyelim. Böylece sql sınıflarını doğrudan kullanabileceğiz. Main metodu içerisinde try catch blokları içerisinde veritabanı bağlantısı için gerekli olan kodları yazacağız. Hata yakalama bloklarının bulunması veritabanı işlemleri için zorunlu olan bir işlemdir. Veritabanı bağlantısı için jdbc sürücüsünün yüklenmesi işlemini
Class.forName("com.mysql.jdbc.Driver").newInstance();
ile yapıyoruz. Sonraki aşamada ise veritabanı bağlantısının açılması, ifadenin oluşturulması ve ifadenin çalıştırılması var. Resultset verilerimizi tutan, kolay yönetilebilen geçici bellek alanları olarak düşünülebilir. En son işlemimiz ise ResultSet içerisindeki verilerin tamamını konsol ekranına yazdırmak. Veritabanı sürücüsü yüklenemezse veya farklı bir hata meydana gelirse fırlatılan hatayı konsol ekranından görebiliriz. Konsol ekranı netbeans IDEnin alt kısmında açılan Output penceresidir. Diğer Microsoft derleyicilerindeki gibi ek bir komut penceresi açılmamakta.
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package mysqlapp;
import java.sql.*;
/**
*
* @author mehmet onur atci
*/
public class Main {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
// load driver
try
{
Class.forName("com.mysql.jdbc.Driver").newInstance();
System.out.print("sürücü yüklendi");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/javaVeri", "root", "12345");
Statement komut = conn.createStatement();
ResultSet rs = komut.executeQuery("select * from users order by userID");
while(rs.next())
{
System.out.println();
System.out.print(rs.getString("username") + "\t");
System.out.print(rs.getString("password") + "\t");
System.out.print(rs.getString("address") + "\t");
System.out.print(rs.getString("realname") + "\t");
System.out.println();
}
conn.close();
}
catch(Exception s)
{
System.out.print(s.getMessage());
}
}
}
Yukarıda java kodunun tamamını görüyoruz. Bu yazıda veritabanı uygulamaları için java geliştirme ortamının tanınması ve düzenlenmesi üzerine yoğunlaştık. Veritabanı işlemleri ile ilgili ayrıntılı makalelerle görüşmek üzere.


yaklaşık 7 ay önce
Hocam çok güzel anlatmışsın. Tebrikler…
yaklaşık 7 ay önce
Merhaba;
Çok güzel bir anlatım olmuş. Teşekkür ederim.