CÔNG NGHỆ THÔNG TIN >> SINH VIÊN BKAP

Kết nối với SQL Server 2012 hoặc latest version [Java Core 8-17]

Đăng lúc: 11:14 AM - 18/12/2023 bởi Charles Chung - 1196

Trong bài viết này tôi sẽ hướng dẫn các bạn một số cách kết nối với SQL Server từ phiên bản 2012 trở đi trong Java 8-17

Giới thiệu về JDBC? 

JDBC viết tắt của Java Database Connectivity, cho phép các ứng dụng Java kết nối với nhiều cơ sở dữ liệu được cài đặt trên các hệ quản trị cơ sở dữ liệu như MySQL, SQL Server, Oracle, PostgreSQL, …

JDBC hỗ trợ các chức năng như tạo một kết nối đến một cơ sở dữ liệu, tạo câu lệnh SQL (Structured Query Language), thực thi câu lệnh SQL, xem và thay đổi dữ liệu.

 

Kiến trúc JDBC (JDBC Architecture)

 

 

Các thành phần trong JDBC

 

  • DriverManager: Lớp này quản lý một danh sách trình điều khiển cơ sở dữ liệu (database drivers). Lựa chọn trình điều khiển phù hợp từ yêu cầu của ứng dụng java sử dụng giao thức giao tiếp.
  • Connection: Đại diện cho một kết nối đến cơ sở dữ liệu
  • Statement: Đối tượng dùng để thực thi các câu lệnh SQL như câu lệnh thêm dữ liệu (insert), câu lệnh thay đổi dữ liệu (update), câu lệnh xoá dữ liệu (delete), câu lệnh xem dữ liệu (select), …
  • ResultSet: Đối tượng này sẽ chứa dữ liệu sau khi chúng ta thực thi câu lệnh xem dữ liệu. Sử dụng đối tượng này để duyệt qua tất cả dữ liệu được chứa trong ResultSet.
  • SQLException: Lớp này xử lý tất cả những ngoại lệ phát sinh trong quá trình ứng dụng java thao tác với cơ sở dữ liệu.

Kết nối với SQL Server 2012 trở đi sử dụng JDBC trong Java 8-17

Ví dụ này sử dụng Eclipse IDE để thực hiện, cơ sở dữ liệu SQL Server 2019. Trước khi thực hiện bạn cần vào công cụ Configuration Management và Enable TPC/IP đồng thời thiết lập cổng 1433 nhé (xem chi tiết bài viết sau Bật giao thức TCP/IP và đổi cổng trong SQL Server 2019).

Các bước thực hiện

  • Mở Eclipse tạo một Java Project
  • Add thư viện kết nối SQL Server vào project sử dụng 1 trong 2 cách sau

Cách 1: Tải tệp sqljdbc4.2.jar về và copy paste vào thư mục Project -> Buid Path -> Configure Buid Path -> Add file sqljdbc4.2.jar vào đường dẫn như hình

Cách 2: Convert Project Java sang Maven, mở file pom.xml và thêm dependency bên dưới vào nhé (tùy phiên bản jdk mà chọn version mssql-jdbc cho phù hợp)

1
2
3
4
5
6
7
<!-- https://mvnrepository.com/artifact/com.microsoft.sqlserver/mssql-jdbc -->

<dependency>
   groupId>com.microsoft.sqlserver</groupId>
   <artifactId>mssql-jdbc</artifactId>
   <version>12.5.0.jre11-preview</version>
</dependency>

 

Thực hiện kết nối với cơ sơ dữ liệu "bkap"

  • Kết nối sử dụng Windows Authentication (ít dùng): tải tệp sqljdbc_auth.dll và copy vào thư mục C:\Windows\System32
1
2
3
4
5
6
7
8
9
String driver="com.microsoft.sqlserver.jdbc.SQLServerDriver";
String url="jdbc:sqlserver://localhost:1433;database=bkap;integratedSecurity=true";
try {
     Class.forName(driver);
     Connection con=DriverManager.getConnection(url);
    System.out.println("Kết nối thành công");
} catch (SQLException | ClassNotFoundException e) {
     e.printStackTrace();
}
  • Kết nối sử dụng SQL Server Authentication (nên dùng)
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
String driver="com.microsoft.sqlserver.jdbc.SQLServerDriver";
String url="jdbc:sqlserver://localhost:1433;database=bkap";
String username="sa";
String password="123465";
try {
    Class.forName(driver);
    Connection con=DriverManager.getConnection(url,username,password);
    System.out.println("Kết nối thành công");
} catch (SQLException | ClassNotFoundException e) {
    e.printStackTrace();
}
  • Trong trường hợp bạn gặp lỗi sau

com.microsoft.sqlserver.jdbc.SQLServerException: "encrypt" property is set to "true" and "trustServerCertificate" property is set to "false" but the driver could not establish a secure connection to SQL Server by using Secure Sockets Layer (SSL) encryption: Error: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target. ClientConnectionId:e4f1c952-19fb-4420-a0e7-fcc5e3c1f0d2

Hãy bổ sung thêm cho chuỗi url như sau nhé

String url="jdbc:sqlserver://localhost:1433;databaseName=bkap;Encrypt=True;TrustServerCertificate=True";

  • Trong trường hợp bạn gặp lỗi sau

Connection failed: The driver could not establish a secure connection to SQL Server by using Secure Sockets Layer (SSL) encryption.
Error: "The server selected protocol version TLS10 is not accepted by client preferences [TLS12]".

Hãy tìm tệp tin java.security tại đường dẫn C:\Program Files\Java\jdk-version\conf\security hoặc tìm ở đường dẫn eclipse\plugins\org.eclipse.justj.openjdk.hotspot.jre.full.win32.x86_64_17.0.8.v20230831-1047\jre\conf\security và copy tệp đó ra vị trí khác rồi tìm dòng sau

jdk.tls.disabledAlgorithms=SSLv3, TLSv1, TLSv1.1, RC4, DES, MD5withRSA, \
    DH keySize < 1024, EC keySize < 224, 3DES_EDE_CBC, anon, NULL

Xóa TLSv1, TLSv1.1 đi lưu lại và copy đè vào vị trí cũ.

 

Video demo fullhd không che

 

 

Link tải source code

 

Chúc các bạn thành công mọi thắc mắc liên hệ thầy Charles Chung

thay lời cảm ơn!

QUẢNG CÁO - TIẾP THỊ