Trong bài bác này tôi sẽ hướng dẫn các bạn sử dụng liên kết vào database áp dụng Java JDBC.

Bạn đang xem: Kết nối cơ sở dữ liệu trong java với mysql

*


*
*

JDBC hoàn toàn có thể làm việc với ngẫu nhiên cơ sở dữ liệu (MySQL, PostgreSQL, Oracle, SQL Server, …) nhờ vào một Driver được cung cấp.

JDBC API bao hàm hai package chính:

java.sql : là một phần của Java standard.javax.sql : là 1 phần của Java enterprise.

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

*

DriverManager : là một class làm chủ danh sách các Driver (database drivers). Các yêu cầu liên kết từ vận dụng Java sẽ được class này tìm kiếm kiếm Driver tương xứng đầu tiên để cấu hình thiết lập kết nối với cơ sở dữ liệu.Driver: là 1 trong những interface dùng làm xử lý các giao tiếp với các đại lý dữ liệu. Thường thì ứng dụng Java đang không giao tiếp trực tiếp với class này mà trải qua DriverManager.Connection : là một trong những interface cung cấp tất cả các method quan trọng cho việc tiếp xúc với database. Interface này chứa đựng nhiều phương thức đa dạng mẫu mã để tạo kết nối với một Database. Toàn bộ các thông tin giao tiếp với cơ sở tài liệu chỉ rất có thể thông qua đối tượng người sử dụng Connection. Một Connection đại diện cho một phiên (session) làm việc với đại lý dữ liệu.Statement : là 1 interface chất nhận được gửi những câu lệnh SQL tới Database. Ko kể ra, một trong những Interface kết thừa từ nó cung thêm các tham số nhằm thực thi các thủ tục đang được tàng trữ (stored procedure).ResultSet : đại diện cho tập vừa lòng các bạn dạng ghi (record) bao gồm được sau thời điểm thực hiện tại truy vấn (query).SQLException : class này xử lý bất cứ lỗi nào xuất hiện trong khi thao tác với Database.

Kết nối database với Java JDBC

Để làm việc với JDBC, các bạn cần thiết đặt Java với một cơ sở dữ liệu (database). Bạn có thể sử dụng bất kỳ database nào, chẳng hạn MySQL.

Như đã giới thiệu ở trên, để làm việc với cơ sở tài liệu từ Java cần phải có Driver. Vào JDBC API, bọn họ có java.sql.Driver, đó là một interface gồm sẵn vào JDK. Mỗi hệ quản trị cần thiết đặt một Driver riêng tương ứng với cơ sở tài liệu đó. Như vậy công việc cần đề nghị làm là download thư viện Driver ứng với nhiều loại Database mong muốn sử dụng.

Download Driver

Oracle Database JDBC Driver

Truy cập vào link: https://www.oracle.com/database/technologies/jdbcdriver-ucp-downloads.html

Chọn phiên bản ojdbc.jar tương ứng với phiên phiên bản sử dụng. Chẳng hạn ojdbc6.jar áp dụng cho JDK8, JDK7, với JDK6.

Nếu áp dụng maven project, chúng ta có thể add dependency khớp ứng ở links sau: https://mvnrepository.com/artifact/com.oracle.jdbc

dependency> groupId>com.oracle.jdbcgroupId> artifactId>ojdbc14artifactId> version>12.2.0.1version> dependency>MySQL Database JDBC DriverCác chúng ta thêm maven dependency hoặc download gói jar tương ứng tại đây: https://mvnrepository.com/artifact/mysql/mysql-connector-java

dependency> groupId>mysqlgroupId> artifactId>mysql-connector-javaartifactId> version>8.0.17version> dependency>SQL hệ thống (JTDS) Database JDBC DriverCác chúng ta thêm maven dependency hoặc tải về gói jar tương xứng tại đây: https://mvnrepository.com/artifact/net.sourceforge.jtds/jtds

dependency> groupId>net.sourceforge.jtdsgroupId> artifactId>jtdsartifactId> version>1.3.1version> dependency>PostgreSQL Database JDBC DriverCác các bạn thêm maven dependency hoặc download gói jar tương xứng tại đây: https://mvnrepository.com/artifact/org.postgresql/postgresql

dependency> groupId>org.postgresqlgroupId> artifactId>postgresqlartifactId> version>42.2.7version> dependency>MariaDB Database JDBC DriverCác các bạn thêm maven dependency hoặc download gói jar khớp ứng tại đây: https://mvnrepository.com/artifact/org.mariadb.jdbc/mariadb-java-client

dependency> groupId>org.mariadb.jdbcgroupId> artifactId>mariadb-java-clientartifactId> version>2.4.4version> dependency>MongoDB Database JDBC DriverCác bạn thêm maven dependency hoặc tải về gói jar tương xứng tại đây: https://mvnrepository.com/artifact/org.mongodb/mongo-java-driver

dependency> groupId>org.mongodbgroupId> artifactId>mongo-java-driverartifactId> version>3.11.0version> dependency>

Kết nối database từ Java

Các bước tiếp xúc giữa lịch trình Java cùng Database:

Load Driver.Tạo liên kết (Open Connection).Tạo câu lệnh tầm nã vấn SQL (Statement).Thực thi câu lệnh tróc nã vấn SQL (Execute Query).Đóng kết nối (Close Connection).Load Driver

Để kết nối với database, chúng ta cần load driver và register nó cùng với ứng dụng. Có 2 phương pháp để thực hiện:

Class.forName() : load class Driver vào memory tại thời khắc runtime. Để đk gọi phương thức: Class.forName(“driverName”);DriverManager.registerDriver() : DriverManager là class tất cả sẵn vào Java. Để đăng ký gọi phương thức: DriverManager.registerDriver(new DriverName());

Chẳng hạn để liên kết với MySQL database, ta đăng ký như sau:

Class.forName("com.mysql.jdbc.Driver"); // Or DriverManager.registerDriver(new com.mysql.cj.jdbc.Driver());Tạo liên kết (Open Connection)Sau khi sẽ load Driver, chúng ta tạo connection:

DriverManager.getConnection(connectionURL); // Or DriverManager.getConnection(connectionURL, userName, password);Ví dụ với MySQL:

// Pattern String connectionURL = "jdbc:mysql://hostname:port/dbname"; // Example String connectionURL = "jdbc:mysql://hostname:3306/jdbcdemo"; Connection con = DriverManager.getConnection(connectionURL, username, password);Tạo câu lệnh tầm nã vấn SQL (Statement)Sau lúc một liên kết được thiết lập, bạn có thể tương tác với cửa hàng dữ liệu.

Các interface JDBCStatement, CallableStatement với PreparedStatement xác minh các phương thức chất nhận được gửi các lệnh SQL với nhận tài liệu từ các đại lý dữ liệu.

Statement st = con.createStatement();Thực thi câu lệnh tróc nã vấn SQL (Execute Query)Bây giờ mang đến phần quan trọng nhất, kia là tiến hành câu lệnh tróc nã vấn SQL (execute query). Như bọn họ biết, gồm thể có tương đối nhiều loại truy tìm vấn. Một trong những đó là:

Truy vấn để cập nhật (update) / chèn (insert)/ xóa (delete) trong đại lý dữ liệu.Truy vấn để lấy dữ liệu (select).

Statement cung cấp một số thủ tục để thực hiện truy vấn SQL khớp ứng với những loại trên:

Phương thức execQuery() : được thực hiện để triển khai các truy vấn vấn truy hỏi xuất quý giá từ cơ sở dữ liệu (select). Thủ tục này trả về đối tượng người tiêu dùng ResultSet rất có thể được sử dụng để mang tất cả các dữ liệu (record) của bảng.Phương thức execUpdate() : được áp dụng để tiến hành các truy nã vấn insert/ update/ delete.Phương thức execute() : hoàn toàn có thể thực thi cả hai trường đúng theo trên. Nếu thủ tục statement.getUpdateCount() trả về số lượng record bị affect.Nếu giá bán trị > 0, tức là thực thi những câu lệnh insert/ update/ delete.Nếu giá trị = 0, tức là thực thi các câu lệnh insert/ update/ delete không tồn tại dòng như thế nào bị tác động hoặc thực thi câu lệnh cập nhật data structure.Nếu giá bán trị = -1, có nghĩa là thực thi câu lệnh select. Lúc đó, hoàn toàn có thể gọi tiếp lệnh statement.getResultSet() để lấy ResultSet.

Ví dụ:

int numberRowsAffected = st.executeUpdate(sqlInsert); if (numberRowsAffected == 0) System.out.println("insertion failed"); else System.out.println("inserted successfully : " + sqlInsert); Đóng liên kết (Close Connection)Cuối cùng, sau khi đã sử dụng chúng ta cần yêu cầu gọi phương thức close() để đóng kết nối (Connection) và giải phóng tài nguyên.

Bằng cách đóng kết nối, các đối tượng của Statement với ResultSet sẽ được đóng trường đoản cú động. Mặc dù nhiên, họ nên tập kiến thức close() Statement sau thời điểm sử dụng xuất xắc vì mong chờ điều đó xảy ra khi nó tự động bị đóng nhằm giải phóng tài nguyên. Đặc biệt nếu họ thực thi Statement trong tầm lặp, thì hoàn toàn có thể sẽ chạm chán vấn đề về thiếu tài nguyên áp dụng nếu chờ đón nó tự động đóng.

Khi Statement được close() thì ResultSet của Statement cũng rất được close.

Chương trình Java liên kết cơ sử tài liệu sử dụng JDBC API

Chương trình bên dưới chỉ đơn giản thực hiện liên kết đến cơ sở dữ liệu MySQL với thêm một dòng tài liệu vào bảng user.

Xem thêm: Đọc Truyện Bồ Câu Không Đưa Thư, Đọc Sách Truyện Bồ Câu Không Đưa Thư

package com.gpcoder; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.sql.Statement; public class HelloJdbc private static final String hostName = "localhost"; private static final String dbName = "jdbcdemo"; private static final String userName = "root"; private static final String password = ""; // jdbc:mysql://hostname:port/dbname private static final String connectionURL = "jdbc:mysql://" + hostName + ":3306/" + dbName; public static void main(String<> args) throws ClassNotFoundException, SQLException // 1. Load Driver // Class.forName("com.mysql.jdbc.Driver"); DriverManager.registerDriver(new com.mysql.cj.jdbc.Driver()); // 2. Mở cửa connection Connection bé = DriverManager.getConnection(connectionURL, userName, password); // 3. Create Statement Statement st = con.createStatement(); // 4. Execute query String sqlInsert = "INSERT INTO user(username, password, createdDAte) VALUE("gpcoder", "123", now());"; int numberRowsAffected = st.executeUpdate(sqlInsert); if (numberRowsAffected == 0) System.out.println("insertion failed"); else System.out.println("inserted successfully : " + numberRowsAffected); st.close(); // 5. Close connection con.close(); Thực thi công tác trên ta có công dụng sau:

inserted successfully : 1Lưu ý: các bạn nên đặt câu lệnh close() trong finally block trong câu lệnh try-catch-finally hoặc sử dụng kỹ năng mới try-with-resource để bảo vệ resource luôn được close sau khi sử dụng. Ví dụ:

package com.gpcoder; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.sql.Statement; public class HelloJdbcWithJava8 private static final String hostName = "localhost"; private static final String dbName = "jdbcdemo"; private static final String userName = "root"; private static final String password = ""; // jdbc:mysql://hostname:port/dbname private static final String connectionURL = "jdbc:mysql://" + hostName + ":3306/" + dbName; public static void main(String<> args) throws ClassNotFoundException, SQLException // 1. Load Driver // Class.forName("com.mysql.jdbc.Driver"); DriverManager.registerDriver(new com.mysql.cj.jdbc.Driver()); try ( // 2. Open connection Connection bé = DriverManager.getConnection(connectionURL, userName, password); // 3. Create Statement Statement st = con.createStatement(); ) // 4. Execute query String sqlInsert = "INSERT INTO user(username, password, createdDAte) VALUE("gpcoder", "123", now());"; int numberRowsAffected = st.executeUpdate(sqlInsert); if (numberRowsAffected == 0) System.out.println("insertion failed"); else System.out.println("inserted successfully : " + numberRowsAffected); // 5. Close connection: will be tự động hóa closed by try-with-resource Trên đây là một số kiến thức cơ phiên bản về liên kết cơ sở tài liệu với Java JDBC. Trong bài viết tiếp theo, chúng ta sẽ cùng khám phá sâu rộng về các API của JDBC.