Giriş
Şu satırı dahil ederiz.
registerDriver metodu - eski kodlarda
1.1 JDBC 4'ten sonra
Artık Class.ForName()'i çağırmaya gerek yok. JVM driver'ı otomatik olarak yüklüyor.
1.2 JDBC 4'ten önce - Class.forName yöntemi
Eğer jar dosyası CLASSPATH içinde yoksa şöyle bir exception atar.
Yani şöyle yapmaya gerek yok.
Şöyle yaparız.
PostgreSQL
Şöyle yaparız.
Şöyle yaparız.
Şöyle yaparız.
Oracle
Şöyle yaparız.
Şöyle yaparız.
kerberos doğrulaması için şöyle yaparız.
getConnection metodu - url + Properties
getConnection metodu yazısına taşıdım.
getConnection metodu - url + user + password
getConnection metodu yazısına taşıdım.
getDrivers metodu
Şu satırı dahil ederiz.
import java.sql.DriverManager;
Bu sınıf DataSource ile aynı işi görür. Yeni kodlarda DriverManager yerine DataSource arayüzünden kalıtan sınıfları kullanmak lazım.registerDriver metodu - eski kodlarda
1.1 JDBC 4'ten sonra
Artık Class.ForName()'i çağırmaya gerek yok. JVM driver'ı otomatik olarak yüklüyor.
1.2 JDBC 4'ten önce - Class.forName yöntemi
Eğer jar dosyası CLASSPATH içinde yoksa şöyle bir exception atar.
java.sql.SQLException:
No suitable driver found for jdbc:mysql://localhost:3306/mydb
SQL Server şöyle bir hata fırlatır.java.lang.ClassNotFoundException: com/microsoft/jdbc/sqlserver/SQLServerDriver
Şöyle yaparız.DriverManager.registerDriver (new oracle.jdbc.OracleDriver());
Bir çok kodda registerDriver çağrısı yerine Class.forName () çağrısı yapılır. Bu çağrı kendi içinde registerDriver işlemini yerine getirir.Yani şöyle yapmaya gerek yok.
Driver d = (Driver)Class.forName("...").newInstance());
DriverManager.registerDriver (d);
AccessŞöyle yaparız.
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
odbc*.jar dosyasının classpath içinde olması gerekir. * karakteri yerine bir sayı gelir. Örneğin ojdbc6.jar şeklinde olabilir. Oracle sitesinde bir sürü jar mevcut. Bunların farkları şöyleAçıklaması şöyle.
- ojdbc*.jar - all the classes to support basic functionality for the Thin and OCI drivers
- ojdbc*_g.jar - same as ojdbc*.jar except compiled with the -g option to include debugging information and with java.util.logging calls included.
- ojdbc*dms.jar - same as ojdbc*.jar except includes code to support Oracle Dynamic Monitoring Service (DMS). Also includes some JDBC logging support. This file can only be used when dms.jar is also in the classpath. The dms.jar file is not shipped as part of the RDBMS product. It is only available as part of the Oracle Application Server product.
- ojdbc*dms_g.jar - same as ojdbc*dms.jar except compiled with the -g option to include debugging information and with full JDBC logging support.
- orai18n.jar - contains the configuration information to support all Oracle character sets in Advanced Data Types (objects). If the database character set is one other than UCS2,ASCII, ISO_LATIN_1, UTF8 and AL32UTF8 and the application uses ADTs, then you must include this file in your classpath.
The odjbc is not very easy to locate since it is not on maven central and I was able to download it from http://maven.icm.edu.pl/artifactory/repo/ by including the repositories tag.odbc*.jar maven central repository'de olmadığı için şöyle yaparız
<repositories>
<repository>
<id>central</id>
<name>Maven Central</name>
<layout>default</layout>
<url>https://repo1.maven.org/maven2</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
<repository>
<id>icm</id>
<name>ICM</name>
<url>http://maven.icm.edu.pl/artifactory/repo/</url>
</repository>
</repositories>
Şöyle yaparız.<dependency>
<groupId>com.oracle.ojdbc</groupId>
<artifactId>ojdbc8</artifactId>
<version>19.3.0.0</version>
</dependency>
Kodda şöyle yaparız.Class.forName("oracle.jdbc.driver.OracleDriver");
Bu kod çalışınca OracleDriver içindeki statik kod kendisini DriverManager sınıfına ekler. Çünkü OracleDriver içindeki static constructor şuna benzerpublic class OracleDriver {
static {
DriverManager.registerDriver(new OracleDriver());
}
}
Şöyle yaparız.
Class.forName("org.postgresql.Driver");
SQLiteŞöyle yaparız.
Class.forName("org.sqlite.JDBC");
SQLServerŞöyle yaparız.
Class.forName(
"com.microsoft.sqlserver.jdbc.SQLServerDriver");
1.3 JDBC 4'ten önce - registerDriver yöntemiOracle
Şöyle yaparız.
DriverManager.registerDriver(new OracleDriver());
getConnection metodu - url
PostgreSQL
Şöyle yaparız.
Windows'ta şöyle yaparız.Şöyle yaparız.
String url = "jdbc:postgresql://localhost:5435/mydbname?user=..."&pass=...";
Connection con = DriverManager.getConnection (url);
SQLiteConnection con = DriverManager.getConnection("jdbc:sqlite:C:\\database.db");
Windows'ta şöyle yaparızConnection con = DriverManager.getConnection("jdbc:sqlite:C:\\database.sqlite");
Linux'ta şöyle yaparızConnection con = DriverManager.getConnection("jdbc:sqlite:/"+ myDBpath);
SQL ServerŞöyle yaparız.
String url = "jdbc:sqlserver://localhost:1433;databaseName=CaiMaster";
Connection conn = DriverManager.getConnection(url);
Örnek
Şöyle yaparız.
Şöyle yaparız.
java.sql.Connection conn = ;
DriverManager.getConnection("jdbc:sqlserver://localhost; integratedSecurity=true;
databaseName=baessland; user=sa; password=1234;");
Örnekkerberos doğrulaması için şöyle yaparız.
jdbc:sqlserver://servername=server_name;integratedSecurity=true;
authenticationScheme=JavaKerberos;userName=user@REALM;password=****
getConnection metodu - url + Properties
getConnection metodu yazısına taşıdım.
getConnection metodu - url + user + password
getConnection metodu yazısına taşıdım.
getDrivers metodu
Şöyle yaparız.
Bu metodlar ile login işlemine zaman aşımı yapmak mümkün.Enumeration<Driver> e = DriverManager.getDrivers();
while(e.hasMoreElements()){
Driver d = e.nextElement();
System.out.println(d.getClass());
System.out.println(d.getClass().getName());
}
Çalıştırmak için şöyle yaparız.java -cp ;ojdbc14.jar; -Djdbc.drivers=oracle.jdbc.OracleDriver MyDriverTest
Çıktı olarak şunu alırız.class oracle.jdbc.driver.OracleDriver
oracle.jdbc.driver.OracleDriver
getLoginTimeout ve setLoginTimeout metodları// Getting timeout value
int timeout = DriverManager.getLoginTimeout();
// Setting timeout value
DriverManager.setLoginTimeout(timeout)
Hiç yorum yok:
Yorum Gönder