JDBC là gì ? Tìm hiểu về JDBC trong Java

Link Source: JDBC là gì ? Tìm hiểu về JDBC trong Java
Thể loại: Java, Lập trình
Tags: Học hành, Lập trình

JDBC là gì ? Tìm hiểu về JDBC trong Java và Cách kết nối java với mysql bằng JDBC


JDBC là gì?


jdbc


JDBC (Java Database Connectivity) là một API tiêu chuẩn dùng để kết nối các chương trình viết bởi Java với các loại cơ sở dữ liệu quan hệ (MySQL, MS SQL, Postgre SQL, Oracle, DB2…).


JDBC chỉ là một tập các interface, các định nghĩa, thông báo lỗi, đặc tả chứ không phải là thư viện. Với mỗi hệ quản trị cơ sở dữ liệu ta sẽ có một cài đặt JDBC riêng cho nó, ví dụ JDBC cho MySQL, JDBC cho MS SQL …


Các thành phần của JDBC


DriverManager: Dùng để quản lý danh sách các Driver (database drivers).


Driver: Dùng để liên kết các kết nối tới cơ sở dữ liệu, dùng để liên kết các liên lạc với cơ sở dữ liệu, điều khiển các liên lạc với database.


Connection: Biểu thị kết nối tới cơ sở dữ liệu. Dùng để tạo ra Statement, PreparedStatement và CallableStatement.


Statement, PreparedStatement, CallableStatement: Chứa lệnh SQL gửi tới cơ sở dữ liệu để thực thi.


ResultSet – biểu diễn một tập kết quả trong cơ sở dữ liệu tạo ra bởi việc sử dụng một câu lệnh SQL là SELECT.


SQLException – một lớp xử lý lỗi ngoại lệ chứa các lỗi truy cập cơ sở dữ liệu.


Java kết nối với database dựa trên nguyên tắc nào?


Java sử dụng JDBC để làm việc với các cơ sở dữ liệu.

jdbc


Ví dụ bạn làm việc với cơ sở dữ liệu Oracle từ Java bạn cần phải có Driver (Đó là class điều khiển việc kết nối với loại cơ sở dữ liệu bạn muốn). Trong JDBC API chúng ta có java.sql.Driver, nó chỉ là một interface, và nó có sẵn trong JDK. Như vậy bạn phải download thư viện Driver ứng với loại Database mà bạn mong muốn.


  • Chẳng hạn với Oracle thì class thi hành Interface java.sql.Driver đó là: oracle.jdbc.driver.OracleDriver

java.sql.DriverManager là một class trong JDBC API. Nó làm nhiệm vụ quản lý các Driver.



Code ví dụ Kết nối java với mysql bằng JDBC


Mình sẽ lấy ví dụ ở stackjava. Tạo cơ sở dữ liệu demo-jdbc và table user_info như hình dưới


jdbc-1


Bây giờ mình sẽ viết 1 chương trình Java kết nối tới database demo-jdbc và hiển thị các thông tin của table user_info


Để kết nối với MySQL bằng Java chúng ta cần download jdbc tương ứng cho MySQL


Các bạn có thể download thư viện jdbc cho MySQL tại đây mysql-connector-java-6.0.6.jar


Hoặc sử dụng maven:


<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>6.0.6</version>
</dependency>


Ở đây mình sử dụng thư viện mysql-connector-java-6.0.6.jar và copy nó vào project



jdbc-2 jdbc-3


jdbc-4


File Demo.java


package stackjava.com.demomysqljdbc.demo;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
public class Demo
public static void main(String[] args) throws ClassNotFoundException, SQLException
Class.forName("com.mysql.jdbc.Driver");
Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/demo-jdbc", "root", "admin1234");
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM user_info");
ResultSetMetaData rsmd = rs.getMetaData();
System.out.println("Total columns: " + rsmd.getColumnCount());
for (int i = 1; i <= rsmd.getColumnCount(); i++)
System.out.println(
"Column " + i + " [name: " + rsmd.getColumnName(i) + " - type: " + rsmd.getColumnTypeName(i) + "]");

System.out.println("--------------------");
while (rs.next())
System.out.println(rs.getInt(1) + " " + rs.getString(2) + " " + rs.getString(3));
con.close();


Giải thích chút nhé:


  • Class.forName dùng để chỉ dẫn cho Java biết sẽ kết nối tới loại database nào. Class.forName(“com.mysql.jdbc.Driver”) dùng để kết nối tới database MySQL

  • DriverManager.getConnection(“jdbc:mysql://localhost:3306/demo-jdbc”, “root”, “admin1234”): tạo một connection tới database có url =jdbc:mysql://localhost:3306/demo-jdbc với username = “root” và password  = “admin1234”

  • ResultSetMetaData sẽ đặt meta data cho ResultSet, ở đây ResultSet lấy từ câu SQL “SELECT * FROM user_info” nên nó sẽ gồm tất cả các column trong table user_info. Nếu bạn chuyển câu SQL thành “SELECT id, name FROM user_info” thì ResultSetMetaData sẽ chỉ có 2 column id, name này thôi.

Kết quả:


jdbc-5


Một số lưu ý:


  • Từ bản mysql-connector-java-6.0.6.jar bắt đầu chuyển class com.mysql.jdbc.Driver  sang com.mysql.cj.jdbc.Driver, nếu bạn vẫn dùng class cũ thì nó sẽ thông báo warning chứ không ảnh hưởng gì.

Download code ví dụ Kết nối java với mysql bằng JDBC tại đây



Link Source: JDBC là gì ? Tìm hiểu về JDBC trong Java
Comment