JDBC - Veritabanı Bağlantıları
Uygun sürücüyü kurduktan sonra, JDBC kullanarak bir veritabanı bağlantısı kurma zamanı gelmiştir.
Bir JDBC bağlantısı kurmak için gereken programlama oldukça basittir. İşte bu basit dört adım -
Import JDBC Packages: Ekle import Java kodunuzdaki gerekli sınıfları içe aktarmak için Java programınıza ifadeler.
Register JDBC Driver: Bu adım, JVM'nin istenen sürücü uygulamasını belleğe yüklemesini sağlar, böylece JDBC isteklerinizi yerine getirebilir.
Database URL Formulation: Bu, bağlanmak istediğiniz veritabanına işaret eden uygun şekilde biçimlendirilmiş bir adres oluşturmak içindir.
Create Connection Object:Son olarak, gerçek veritabanı bağlantısını kurmak için DriverManager nesnesinin getConnection () yöntemine bir çağrıyı kodlayın .
JDBC Paketlerini İçe Aktar
Import ifadeler, Java derleyicisine kodunuzda başvurduğunuz sınıfları nerede bulacağını söyler ve kaynak kodunuzun en başına yerleştirilir.
SQL tablolarındaki verileri seçmenize, eklemenize, güncellemenize ve silmenize olanak tanıyan standart JDBC paketini kullanmak için kaynak kodunuza aşağıdaki içe aktarmaları ekleyin -
import java.sql.* ; // for standard JDBC programs
import java.math.* ; // for BigDecimal and BigInteger support
JDBC Sürücüsünü Kaydedin
Sürücüyü kullanmadan önce programınıza kaydettirmelisiniz. Sürücünün kaydedilmesi, Oracle sürücüsünün sınıf dosyasının belleğe yüklendiği süreçtir, böylece JDBC arayüzlerinin bir uygulaması olarak kullanılabilir.
Bu kaydı programınızda yalnızca bir kez yapmanız gerekir. Bir sürücüyü iki yoldan biriyle kaydedebilirsiniz.
Yaklaşım I - Class.forName ()
Bir sürücüyü kaydetmenin en yaygın yaklaşımı, Java'nın Class.forName()yöntem, sürücünün sınıf dosyasını dinamik olarak belleğe yüklemek için otomatik olarak kaydeder. Bu yöntem tercih edilir çünkü sürücü kaydını yapılandırılabilir ve taşınabilir hale getirmenize izin verir.
Aşağıdaki örnek, Oracle sürücüsünü kaydetmek için Class.forName () kullanır -
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
}
catch(ClassNotFoundException ex) {
System.out.println("Error: unable to load driver class!");
System.exit(1);
}
Kullanabilirsiniz getInstance() uyumlu olmayan JVM'lerde çalışma yöntemi, ancak daha sonra iki ekstra İstisna için aşağıdaki gibi kodlamanız gerekir -
try {
Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
}
catch(ClassNotFoundException ex) {
System.out.println("Error: unable to load driver class!");
System.exit(1);
catch(IllegalAccessException ex) {
System.out.println("Error: access problem while loading!");
System.exit(2);
catch(InstantiationException ex) {
System.out.println("Error: unable to instantiate driver!");
System.exit(3);
}
Yaklaşım II - DriverManager.registerDriver ()
Bir sürücüyü kaydetmek için kullanabileceğiniz ikinci yaklaşım, statik DriverManager.registerDriver() yöntem.
Microsoft tarafından sağlanan gibi JDK uyumlu olmayan bir JVM kullanıyorsanız, registerDriver () yöntemini kullanmalısınız.
Aşağıdaki örnek, Oracle sürücüsünü kaydetmek için registerDriver () kullanır -
try {
Driver myDriver = new oracle.jdbc.driver.OracleDriver();
DriverManager.registerDriver( myDriver );
}
catch(ClassNotFoundException ex) {
System.out.println("Error: unable to load driver class!");
System.exit(1);
}
Veritabanı URL Formülasyonu
Sürücüyü yükledikten sonra, sürücüyü kullanarak bir bağlantı kurabilirsiniz. DriverManager.getConnection()yöntem. Kolay başvuru için, aşırı yüklenmiş üç DriverManager.getConnection () yöntemini listeleyeyim -
getConnection (Dize url'si)
getConnection (Dize url'si, Özellikler prop)
getConnection (Dize url'si, Dize kullanıcısı, Dize şifresi)
Burada her form bir veritabanı gerektirir URL. Veritabanı URL'si, veritabanınıza işaret eden bir adrestir.
Bir veritabanı URL'si formüle etmek, bir bağlantı kurmayla ilgili sorunların çoğunun meydana geldiği yerdir.
Aşağıdaki tablo, popüler JDBC sürücü adlarını ve veritabanı URL'sini listeler.
RDBMS | JDBC sürücü adı | URL biçimi |
---|---|---|
MySQL | com.mysql.jdbc.Driver | jdbc:mysql://hostname / databaseName |
ORACLE | oracle.jdbc.driver.OracleDriver | jdbc:oracle:thin:@hostname: port Number: databaseName |
DB2 | COM.ibm.db2.jdbc.net.DB2Driver | jdbc:db2:hostname: port Numarası / veritabanıAdı |
Sybase | com.sybase.jdbc.SybDriver | jdbc:sybase:Tds:hostname: port Numarası / veritabanıAdı |
URL biçiminde vurgulanan tüm bölümler statiktir ve veritabanı kurulumunuza göre yalnızca kalan bölümü değiştirmeniz gerekir.
Bağlantı Nesnesi Oluşturun
Üç biçimini listeledik DriverManager.getConnection() bir bağlantı nesnesi oluşturma yöntemi.
Kullanıcı adı ve şifre ile bir Veritabanı URL'si kullanmak
En sık kullanılan getConnection () biçimi, bir veritabanı URL'si, bir kullanıcı adı ve bir parola iletmenizi gerektirir :
Oracle'ı kullandığınızı varsayarsak thin sürücü, URL'nin veritabanı bölümü için bir host: port: databaseName değeri belirtirsiniz.
192.0.0.1 TCP / IP adresinde amrood ana bilgisayar adına sahip bir ana makineniz varsa ve Oracle dinleyiciniz 1521 numaralı bağlantı noktasını dinleyecek şekilde yapılandırılmışsa ve veritabanı adınız EMP ise, tam veritabanı URL'si -
jdbc:oracle:thin:@amrood:1521:EMP
Şimdi, uygun kullanıcı adı ve parola ile getConnection () yöntemini çağırmanız gerekir. Connection aşağıdaki gibi nesne -
String URL = "jdbc:oracle:thin:@amrood:1521:EMP";
String USER = "username";
String PASS = "password"
Connection conn = DriverManager.getConnection(URL, USER, PASS);
Yalnızca Veritabanı URL'sini Kullanma
DriverManager.getConnection () yönteminin ikinci bir biçimi yalnızca bir veritabanı URL'si gerektirir -
DriverManager.getConnection(String url);
Ancak bu durumda, veritabanı URL'si kullanıcı adı ve parolayı içerir ve aşağıdaki genel biçime sahiptir:
jdbc:oracle:driver:username/password@database
Dolayısıyla, yukarıdaki bağlantı şu şekilde oluşturulabilir -
String URL = "jdbc:oracle:thin:username/password@amrood:1521:EMP";
Connection conn = DriverManager.getConnection(URL);
Veritabanı URL'si ve Özellikler Nesnesi Kullanma
DriverManager.getConnection () yönteminin üçüncü bir biçimi, bir veritabanı URL'si ve bir Özellikler nesnesi gerektirir -
DriverManager.getConnection(String url, Properties info);
Özellikler nesnesi, bir dizi anahtar kelime-değer çifti içerir. GetConnection () yöntemine yapılan bir çağrı sırasında sürücü özelliklerini sürücüye iletmek için kullanılır.
Önceki örneklerle yapılan aynı bağlantıyı yapmak için aşağıdaki kodu kullanın -
import java.util.*;
String URL = "jdbc:oracle:thin:@amrood:1521:EMP";
Properties info = new Properties( );
info.put( "user", "username" );
info.put( "password", "password" );
Connection conn = DriverManager.getConnection(URL, info);
JDBC Bağlantılarını Kapatma
JDBC programınızın sonunda, her bir veritabanı oturumunu sonlandırmak için veritabanına olan tüm bağlantıları açıkça kapatmanız gerekir. Ancak, unutursanız, Java'nın çöp toplayıcısı eski nesneleri temizlediğinde bağlantıyı kapatacaktır.
Çöp toplamaya güvenmek, özellikle veritabanı programlamasında, çok zayıf bir programlama uygulamasıdır. Bağlantı nesnesiyle ilişkili close () yöntemiyle her zaman bağlantıyı kapatmayı alışkanlık haline getirmelisiniz.
Bir bağlantının kapatıldığından emin olmak için kodunuzda bir 'nihayet' bloğu sağlayabilirsiniz. Bir nihayet bloğu, istisna olup olmadığına bakılmaksızın her zaman yürütülür.
Yukarıdaki açılmış bağlantıyı kapatmak için aşağıdaki gibi close () yöntemini çağırmalısınız -
conn.close();
Bir bağlantının açıkça kapatılması DBMS kaynaklarını korur ve bu da veritabanı yöneticinizi mutlu eder.
Daha iyi bir anlayış için, JDBC - Örnek Kod eğitimimizi incelemenizi öneririz .