Thư viện điều khiển các loại cơ sở dữ liệu khác nhau trong Java
Công ty Vĩnh Cửu tuyển dụng lập trình viên Java

1- Giới thiệu

Tài liệu này hướng dẫn các bạn download thư viện điều khiển một loại cơ sở dữ liệu nào đó, hiện tại tôi hướng dẫn trên các loại database:
  1. Oracle
  2. MySQL
  3. SQL Server.

2- Thư viện điều khiển Database Oracle

Thư viện điều khiển cơ sở dữ liệu Oracle thường có tên ojdbc14.jar, ojdbc6.jar, ... sự khác biệt chỉ là nó được biên dịch bởi java phiên bản nào. Chẳng hạn:
  • ojdbc14.jar: được biên dịch và đóng gói bởi Java phiên bản 1.4
  • ojdbc6.jar: được biên dịch và đóng gói bởi Java phiên bản 6.
Chi tiết hơn bạn có thể xem và download tại website của Oracle:
Bạn có thể download file ojdbc6.jar, nó có thể điều khiển cho database Oracle các phiên bản khác nhau (XE, 10g, 11g, 12). Mà hầu hết các ứng dụng Java thời điểm này đều sử dụng Java phiên bản 6 hoặc mới hơn.

Việc download tại website của Oracle đòi hỏi bạn phải có tài khoản Oracle (Đăng ký miễn phí).
Trong trường hợp muốn nhanh chóng bạn có thể download theo đường link dưới đây:
Kết quả download được:

2.1- Maven for Oracle JDBC Driver

   <repositories>
       <!-- Repository for ORACLE ojdbc6. -->
       <repository>
           <id>codelds</id>
           <url>https://code.lds.org/nexus/content/groups/main-repo</url>
       </repository>
   </repositories>

    .......

   <dependencies>

       ......

       <!-- Oracle database driver -->
       <dependency>
           <groupId>com.oracle</groupId>
           <artifactId>ojdbc6</artifactId>
           <version>11.2.0.3</version>
       </dependency>

       .......

   </dependencies>

2.2- Cách sử dụng (ojdbc)

// Driver class:
oracle.jdbc.driver.OracleDriver

// URL Connection String: (SID)
String urlString ="jdbc:oracle:thin:@myhost:1521:mysid"


// URL Connection String:  (Service Name)
String urlString ="jdbc:oracle:thin:username/pass@//myhost:1521/myservicename"

// Or:
String urlString ="jdbc:oracle:thin:@myhost:1521/myservicename";
Ví dụ kết nối JDBC vào cơ sở dữ liệu Oracle.
  • OracleConnUtils.java
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class OracleConnUtils {

   public static Connection getOracleConnection()
           throws ClassNotFoundException, SQLException {
       String hostName = "localhost";
       String sid = "db11g";
       String userName = "learningsql";
       String password = "1234";

       return getOracleConnection(hostName, sid, userName, password);
   }

   public static Connection getOracleConnection(String hostName, String sid,
           String userName, String password) throws ClassNotFoundException,
           SQLException {

       // Khai báo class Driver cho DB Oracle
       // Việc này cần thiết với Java 5
       // Java6 trở lên tự động tìm kiếm Driver thích hợp.
       // Nếu bạn dùng Java > 6, thì ko cần dòng này cũng được.
       Class.forName("oracle.jdbc.driver.OracleDriver");

       // Cấu trúc URL Connection dành cho Oracle
       // Ví dụ: jdbc:oracle:thin:@localhost:1521:db11g
       String connectionURL = "jdbc:oracle:thin:@" + hostName + ":1521:" + sid;

       Connection conn = DriverManager.getConnection(connectionURL, userName,
               password);
       return conn;
   }
}

3- Thư viện điều khiển Database MySQL

Bạn có thể download các thư viện điều khiển cơ sở dữ liệu MySQL tại:
Kết quả download được:

3.1- Cách sử dụng

Cách sử dụng:  (MySQL)
// Driver class:
com.mysql.jdbc.Driver

// URL Connection String:
String url = "jdbc:mysql://hostname:3306/dbname";


// Ví dụ:
String url = "jdbc:mysql://localhost:3306/simplehr";
Ví dụ sử dụng JDBC kết nối vào Database MySQL
  • MySQLConnUtils.java
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class MySQLConnUtils {

 public static Connection getMySQLConnection()
         throws ClassNotFoundException, SQLException {
     String hostName = "localhost";
     String dbName = "learningsql";
     String userName = "root";
     String password = "12345";
     return getMySQLConnection(hostName, dbName, userName, password);
 }

 public static Connection getMySQLConnection(String hostName, String dbName,
         String userName, String password) throws SQLException,
         ClassNotFoundException {
     // Khai báo class Driver cho DB MySQL
     // Việc này cần thiết với Java 5
     // Java6 trở lên tự động tìm kiếm Driver thích hợp.
     // Nếu bạn dùng Java > 5, thì ko cần dòng này cũng được.
     Class.forName("com.mysql.jdbc.Driver");

     // Cấu trúc URL Connection dành cho MySQL
     // Ví dụ: jdbc:mysql://localhost:3306/simplehr
     String connectionURL = "jdbc:mysql://" + hostName + ":3306/" + dbName;

     Connection conn = DriverManager.getConnection(connectionURL, userName,
             password);
     return conn;
 }
}

3.2- Một số rắc rối và cách khắc phục

Trong một số trường hợp kết nối vào MySQL từ Java hoặc đơn giản là từ máy khác bị lỗi, nguyên nhân có thể bạn chưa cấu hình MySQL server cho phép kết nối từ máy khác.
Bạn có thể xem lại mục cấu hình trong tài liệu "Hướng dẫn cài đặt và cấu hình MySQL Community":

4- Thư viện điều khiển Database SQL Server (JTDS)

JTDS là một thư viện khác điều khiển database SQLServer, nó là một thư viện mã nguồn mở.
jTDS: là một mã nguồn mở thuần Java 100% (type 4) 3,0 JDBC điều khiển cho Microsoft SQL Server (6,5, 7, 2000, 2005, 2008, 2012) và Sybase ASE (10, 11, 12, 15). jTDS dựa trên FreeTDS và hiện là trình điều khiển JDBC nhanh nhất cho SQL Server và Sybase. jTDS là 100% tương thích với JDBC 3.0, hỗ trợ  forward-only and scrollable/updateable ResultSet và thực hiện tất cả các method DatabaseMetaData ResultSetMetaData.
Bạn có thể download các phiên bản tại:
Kết quả download được:

4.1- Cách sử dụng (jtds)

Cách sử dụng:  (SQL Server)
// Driver Class
net.sourceforge.jtds.jdbc.Driver

// Connection URL String:
jdbc:jtds:<server_type>://<server>[:<port>][/<database>][;<property>=<value>[;...]]

// Example 1:
String url = "jdbc:jtds:sqlserver://MYPC:1433/simplehr;instance=SQLEXPRESS;user=sa;password=s3cr3t";

getConnection(url);

// Example 2:
String url = "jdbc:jtds:sqlserver://MYPC:1433/simplehr;instance=SQLEXPRESS";

getConnection(url, "sa", "s3cr3t"):
Ví dụ sử dụng JDBC kết nối vào Database SQLServer sử dụng thư viện JTDS.
  • SQLServerConnUtils_JTDS.java
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class SQLServerConnUtils_JTDS {

 // Kết nối vào SQLServer.
 // (Sử dụng thư viện điều khiển JTDS)
 public static Connection getSQLServerConnection_JTDS() throws SQLException,
         ClassNotFoundException {
     String hostName = "localhost";
     String sqlInstanceName = "SQLEXPRESS";
     String database = "simplehr";
     String userName = "sa";
     String password = "12345";

     return getSQLServerConnection_JTDS(hostName, sqlInstanceName, database,
             userName, password);
 }


 // Trường hợp sử dụng SQLServer.
 // Và thư viện JTDS.
 private static Connection getSQLServerConnection_JTDS(String hostName,
         String sqlInstanceName, String database, String userName,
         String password) throws ClassNotFoundException, SQLException {
     // Khai báo class Driver cho DB SQLServer
     // Việc này cần thiết với Java 5
     // Java6 tự động tìm kiếm Driver thích hợp.
     // Nếu bạn dùng Java > 5, thì ko cần dòng này cũng được.
     Class.forName("net.sourceforge.jtds.jdbc.Driver");

     // Cấu trúc URL Connection dành cho SQLServer
     // Ví dụ:
     // jdbc:jtds:sqlserver://localhost:1433/simplehr;instance=SQLEXPRESS
     String connectionURL = "jdbc:jtds:sqlserver://" + hostName + ":1433/"
             + database + ";instance=" + sqlInstanceName;

     Connection conn = DriverManager.getConnection(connectionURL, userName,
             password);
     return conn;
 }

}

4.2- Một số rắc rối và cách khắc phục

Trong một số tình huống kết nối vào SQLServer và bị lỗi:
Exception in thread "main" java.sql.SQLException: Server tran-vmware has no instance named SQLEXPRESS.
   at net.sourceforge.jtds.jdbc.JtdsConnection.<init>(JtdsConnection.java:301)
   at net.sourceforge.jtds.jdbc.Driver.connect(Driver.java:184)
   at java.sql.DriverManager.getConnection(DriverManager.java:571)
   at java.sql.DriverManager.getConnection(DriverManager.java:215)
   at org.o7planning.tutorial.jdbc.ConnectionUtils.getSQLServerConnection_JTDS(ConnectionUtils.java:189)
   at org.o7planning.tutorial.jdbc.ConnectionUtils.getSQLServerConnection_JTDS(ConnectionUtils.java:72)
   at org.o7planning.tutorial.jdbc.ConnectionUtils.getMyConnection(ConnectionUtils.java:31)
   at org.o7planning.tutorial.jdbc.TestConnection.main(TestConnection.java:20)
Lỗi trên có thể do bạn chưa Enable dịch vụ TCP/IP của SQLServer. Bạn có thể tham khảo thêm mục cấu hình trong tài liệu: "Hướng dẫn cài đặt và cấu hình SQLServer Express ..." tại:
 

5- Thư viện điều khiển Database SQL Server (SQLJDBC)

SQLJDBC là thư viện được cung cấp bởi Microsoft.
Download:
Giải nén file vừa download được.
Kết quả có được thư viện:

5.1- Cách sử dụng (sqljdbc)

// Driver Class:
com.microsoft.sqlserver.jdbc.SQLServerDriver

Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");

// Url String:
String url = "jdbc:sqlserver://ServerIp;Instance=SQLEXPRESS;databaseName=simplehr";

// Hoặc
String url = "jdbc:sqlserver://ServerIp:1433;Instance=SQLEXPRESS;databaseName=simplehr";

String user = "dbUserID";
String pass = "dbUserPassword";

Connection connection = DriverManager.getConnection(url, user, pass);
Ví dụ sử dụng JDBC kết nối vào Database SQLServer sử dụng thư viện SQLJDBC.
  • SQLServerConnUtils_SQLJDBC.java
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class SQLServerConnUtils_SQLJDBC {
 
  // Kết nối vào SQLServer.
  // (Sử dụng thư viện điều khiển SQLJDBC)
  public static Connection getSQLServerConnection_SQLJDBC()
          throws ClassNotFoundException, SQLException {
      String hostName = "localhost";
      String sqlInstanceName = "SQLEXPRESS";
      String database = "learningsql";
      String userName = "sa";
      String password = "12345";

      return getSQLServerConnection_SQLJDBC(hostName, sqlInstanceName,
              database, userName, password);
  }



  // Trường hợp sử dụng SQLServer.
  // Và thư viện SQLJDBC.
  private static Connection getSQLServerConnection_SQLJDBC(String hostName,
          String sqlInstanceName, String database, String userName,
          String password) throws ClassNotFoundException, SQLException {
      // Khai báo class Driver cho DB SQLServer
      // Việc này cần thiết với Java 5
      // Java6 tự động tìm kiếm Driver thích hợp.
      // Nếu bạn dùng Java > 5, thì ko cần dòng này cũng được.
      Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");

      // Cấu trúc URL Connection dành cho SQLServer
      // Ví dụ:
      // jdbc:sqlserver://ServerIp:1433/SQLEXPRESS;databaseName=simplehr
      String connectionURL = "jdbc:sqlserver://" + hostName + ":1433"
              + ";instance=" + sqlInstanceName + ";databaseName=" + database;

      Connection conn = DriverManager.getConnection(connectionURL, userName,
              password);
      return conn;
  }

}

5.2- Một số rắc rối và cách khắc phục

Trong một số tình huống kết nối vào SQLServer và bị lỗi:
com.microsoft.sqlserver.jdbc.SQLServerException: The TCP/IP connection to the host localhost, port 1433 has failed. Error: "Connection refused: connect. Verify the connection properties. Make sure that an instance of SQL Server is running on the host and accepting TCP/IP connections at the port. Make sure that TCP connections to the port are not blocked by a firewall.".
  at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(SQLServerException.java:190)
  at com.microsoft.sqlserver.jdbc.SQLServerException.ConvertConnectExceptionToSQLServerException(SQLServerException.java:241)
  at com.microsoft.sqlserver.jdbc.SocketFinder.findSocket(IOBuffer.java:2243)
  at com.microsoft.sqlserver.jdbc.TDSChannel.open(IOBuffer.java:491)
  at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:1309)
  at com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:991)
  at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:827)
  at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:1012)
  at java.sql.DriverManager.getConnection(Unknown Source)
  at java.sql.DriverManager.getConnection(Unknown Source)
  ...
Lỗi trên có thể do bạn chưa Enable dịch vụ TCP/IP của SQLServer. Bạn có thể tham khảo thêm mục cấu hình SQLServer trong tài liệu "Hướng dẫn cài đặt và cấu hình SQLServer Express ..." tại:
Trường hợp tiếp tục bị lỗi:
Exception in thread "main" com.microsoft.sqlserver.jdbc.SQLServerException: The TCP/IP connection to the host tran-vmware, port 1433 has failed. Error: "Connection refused: connect. Verify the connection properties. Make sure that an instance of SQL Server is running on the host and accepting TCP/IP connections at the port. Make sure that TCP connections to the port are not blocked by a firewall.".
 at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(SQLServerException.java:190)
 at com.microsoft.sqlserver.jdbc.SQLServerException.ConvertConnectExceptionToSQLServerException(SQLServerException.java:241)
 at com.microsoft.sqlserver.jdbc.SocketFinder.findSocket(IOBuffer.java:2243)
 at com.microsoft.sqlserver.jdbc.TDSChannel.open(IOBuffer.java:491)
 at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:1309)
 at com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:991)
 at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:827)
 at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:1012)
 at java.sql.DriverManager.getConnection(DriverManager.java:571)
 at java.sql.DriverManager.getConnection(DriverManager.java:215)
 ...
Đây là một lỗi khó chịu, vì khi chuyển sang sử dụng thư viện JTDS không bị lỗi này.
  • TODO
  • You should use JTDS

6- Thư viện điều khiển Database MongoDB

Thư viện điều khiển Database MongoDB bạn có thể download tại:
Bạn cũng có thể download tại Maven Repository: