JDBC Veritabanı Bağlantısı
JDBC Derslerine devam ediyoruz. Önceki JDBC Dersleri’ne ulaşmak için tıklayınız.
Bu JDBC Dersinde önceki derslerde gördüğümüz, kavradığımız konuları pratiğe dökmeye başlayacağız. JDBC API ile Veritabanımız ile bağlantı kuracağız.
JDBC ile bağlanacağımız veritabanımız MySql olucak. (MySql Server MySql WorkBench Kurulumu için tıklayınız)
JDBC ile Veritabanı bağlantısı için yapmamız gereken adımlar sabit bu adımları önceki derslerde açıklamıştım. Şimdi uygulamaya geçelim.
1. Öncelikle yapapcağımız ilk iş JDBC yi kullanmamız için gerekli olan kütüphaneyi programımıza eklemek olacak.
import java.sql.*;
2. Kullandığımız veritabanımızın sürücüsünü yükleyeceğiz. Sık kullanabileceğimiz veritabanı Url ve sürücü’lerini önceki derste yazsamda tekrar hatırlayalım.
RDBMS |
JDBC sürücüsü adı |
URL formatı |
---|---|---|
MySQL | com.mysql.jdbc.Driver | jdbc: mysql :/ / hostadi / veritabanıadı |
ORACLE | oracle.jdbc.driver.OracleDriver | jdbc: Oracle: ince: @ hostadi: port numarası: veritabanıadı |
DB2 | COM.ibm.db2.jdbc.net.DB2Driver | jdbc: db2: hostadi: port numarası / veritabanıadı |
Sybase | com.sybase.jdbc.SybDriver | jdbc: sybase: TDS: hostadi: port numarası / veritabanıadı |
Biz MySQL kullanacağımız için yüklememiz gereken JDBC sürücünü yazalım.
Class.forName("com.mysql.jdbc.Driver");
3. Veritabanımızın yolunu belirtmemiz için gereken Url’i yazalım.
String url = "jdbc:mysql://localhost:3306/veritabanıadi";
3306 olan yer MySQL’in kullandığı port numarasıdır. Kurulumda bu port numarası varsayılan olarak gelir. Başka bir program kullanmıyorsa ya da siz değiştirmeyseniz sorun yaşamacaksınız ancak bir değişiklik var ise belirtilen port numarasını yazmanız gerekmekte.
4. İşte amacımıza ulaşmamız için son adım. Bağlanmak.
Connection con = DriverManager.getConnection(url,"kullaniciadi","sife");
Veritabanımız ile bağlantımızı kurmak için gerekli olan bölümdeyiz. Bu adımda MySQL’i e ulaşıp kullanmamız için gerekli olan kullanıcı adı ve şifre ile beraber url’imizi DriverManager.getConnection () metodu sayesinde bağlantımızı gerçekleştireceğiz.
Eğer bu adımda bir hata almıyorsak bağlantımızı sağladık demektir. Bu bağlantının hata verip vermediğini anlamak için try-catch bloğuna almamız gerekmekte. İleriki derslerde ve diğer yazıda ki örneklerimizde try-catch bloğuna alacağız.
5. Bağlantı kapatmak.
con.close();
Açtığımız bağlantımızı kapatmamız programımız ile veritabanı arasındaki yolu işimiz bittiğinde programımıza güvenlik ve kaynak amaçlı bir katkı sağlayacaktır.
Son olarak bir bağlantı işlemi nasıl olur bakalım.
import com.mysql.jdbc.Connection; import com.mysql.jdbc.Statement; import java.sql.DriverManager; import java.sql.SQLException; public class Baglanti { try { Class.forName("com.mysql.jdbc.Driver"); } catch (ClassNotFoundException e) { System.out.println("Mysql Driver'inde sorun bulunmakta",e); return; } Connection connection = null; try { connection = DriverManager .getConnection("jdbc:mysql://localhost:3306/veritabaniadi","root", "password"); } catch (SQLException e) { System.out.println("Baglantı Sağlanamadı",e); e.printStackTrace(); return; } } }
java ile oracle veri tabanına bağlanmak istiyorum fakat aşağıdaki gibi hata almaktayım sebebi nedir?
java.lang.ClassNotFoundException: oracle.jdbc.driver.OracleDriver
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:264)
at orclconnect.Orclconnect.main(Orclconnect.java:27)
BUILD SUCCESSFUL (total time: 0 seconds)
Projenize Oracle veritabanına bağlanmak için gerekli olan kütüphaneyi eklemediğiniz için ilgili classları bulamıyor.
bilgisayarımda yüklü olan jdk 1.8 oracle sitesinden ojdbc6, ojdbc7, ojdbc8, indirdim fakat hala aynı hatayı almaktayım.
java.sql.SQLException: ORA-28009: connection as SYS should be as SYSDBA or SYSOPER
at oracle.jdbc.driver.T4CTTIoer11.processError(T4CTTIoer11.java:494)
at oracle.jdbc.driver.T4CTTIoer11.processError(T4CTTIoer11.java:441)
at oracle.jdbc.driver.T4CTTIoer11.processError(T4CTTIoer11.java:436)
at oracle.jdbc.driver.T4CTTIfun.processError(T4CTTIfun.java:1061)
at oracle.jdbc.driver.T4CTTIoauthenticate.processError(T4CTTIoauthenticate.java:550)
at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:623)
at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:252)
at oracle.jdbc.driver.T4CTTIoauthenticate.doOAUTH(T4CTTIoauthenticate.java:499)
at oracle.jdbc.driver.T4CTTIoauthenticate.doOAUTH(T4CTTIoauthenticate.java:1279)
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:663)
at oracle.jdbc.driver.PhysicalConnection.connect(PhysicalConnection.java:688)
at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:39)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:691)
at java.sql.DriverManager.getConnection(DriverManager.java:664)
at java.sql.DriverManager.getConnection(DriverManager.java:247)
at oracleconnection.Oracleconnection.main(Oracleconnection.java:25)
Bağlanmaya çalıştığınız kullanıcı ile ilgili bir sorun var. SYS’nin bağlanmak için yetkisi yok. SYSDBA ya da SYSOPER ile tekrar bağlanmayı ya da SYS kullanıcısına gerekli izinleri verin. Şu an driver sorunu ortadan kalkmış. Kullanıcı problemi bulunmakta.