JAVA ile MySQL Bağlantısı

2010-05-16 16:41:19


Bu yazımda Java programlama dili ve MySQL veritabanlarına bağlantıyı göstereceğim. Bunun için bize gerekenler şunlardır:

1-Lokalde çalışacaksanız sisteminizde MySQL kurulu olmalıdır. Uzak sunucuda çalışacaksanız da, veritabanlarının bulunduğu sunucunun IP adresi gerekmektedir. Uzak sunucuda çalışmak için, sunucunun size izin vermesi gerekebilir. Ben lokalde yani kendi bilgisayarımda bulunan veritabanından veri çektim.

2-Java ile veritabanı bağlantısı yapabilmek için driver gerekir. MySQL için MySQL Connector gerekir. Buradan indirebilirsiniz.

Şimdi indireceğiniz MySQL Connector'ı projenize nasıl ekleyeceğinize bakalım. Eclipse kullanıyorsanız,Project menüsünden Properties ' e girin.Aşağıdaki pencere ile karşılaşacaksınız. Resimde de göründüğü gibi sol taraftan "Java Build Path" seçip, "Add External JARs" a tıklayıp MySQL Connector dosyanızı seçin.

 

mysql connector java

Eğer IDE olarak Netbeans kullanıyorsanız aşağıdaki resimlerde gösterildiği gibi MySQL Connector dosyanızı ekleyiniz.

 

netbeans1 netbeans2

Şimdi de kullanacağımız class ve interface'lere bakalım.

Connection interface'i programımız ve veritabanı arasındaki bağlantıyı  SQL ifadeleri yaratmamızı sağlar. DriverManager classının bir static metodu olan getConnection() ile Connection nesnemize gereken 3 değeri veriyoruz. Bu 3 değer veritabanı URL'si, kullanıcı adı ve şifredir.

Connection baglanti=null;
baglanti=DriverManager.getConnection("jdbc:mysql://localhost/project","root","12345");

Yarattığımız SQL ifadelerini veritabanına göndermek için Statement interface'ini kullanıyoruz. SQL ifadelerini veritabanına göndermek için de executeQuery metodu kullanılır.

Statement statement=baglanti.createStatement();
ResultSet result=statement.executeQuery(query);

executeQuery metodu geriye ResultSet nesnesi döndürür;yani veritabanından size dönen cevaptır. Eğer veritabanına veri giriyorsanız veya veri siliyorsanız ya da güncelleme yapıyorsanız geriye bir değer dönmeyecektir. Bu durumda executeUpdate metodunu kullanmanız daha mantıklı olacaktır.

ResultSetMetaData nesnesi ile veritabanından gelen ResultSet nesnesindeki sütun sayılarını ve sütun isimlerini alabiliriz.

ResultSetMetaData meta = resultSet.getMetaData();
int sutunSayisi = meta.getColumnCount();
String ilkSutun=meta.getColumnName(1); //ilk sütunun adı,( sütun indeksleri 1 den başlar )

Örnek program:

import java.sql.*;

public class Database {

	public static void main(String[] args) 
	{
		Connection baglanti=null;
		Statement statement=null;
		String query="select * from course";
		
		try
		{
			//Driverı ekliyoruz.
			Class.forName("com.mysql.jdbc.Driver"); 
				
			baglanti=DriverManager.getConnection("jdbc:mysql://localhost/project","root","");
				
			statement=baglanti.createStatement();
			
			ResultSet result=statement.executeQuery(query);
			ResultSetMetaData meta=result.getMetaData();
				
			for(int i=1;i<=meta.getColumnCount();i++)
				System.out.printf( "%-8s\t", meta.getColumnName( i ) );
			System.out.println();

				
			while(result.next())
			{
				for ( int i = 1; i <= 4; i++ )
					 System.out.printf( "%-8s\t", result.getObject( i ) );
				System.out.println();
	
			}
		}

		catch(SQLException e)
		{
			e.printStackTrace();
			System.exit(1);
		}
		catch(ClassNotFoundException e) 
		{
			e.printStackTrace();
			System.exit(1);
		}
		finally
		{
			try
			{
				baglanti.close();
				statement.close();
			}
			catch(Exception e)
			{
				e.printStackTrace();
				System.exit(1);
			}
		}
	}
}

Çıktı:

java_myql