Hướng dẫn cách tạo webservice kết nối database

-

JDBC là gì?

JDBC (Java Database Connectivity) là một API chuẩn chỉnh dùng để liên can cùng với các nhiều loại cơ sở dữ liệu dục tình (database relationship). JDBC bao gồm một tập thích hợp các class và các interface cần sử dụng đến ứng dụng Java rất có thể tiếp xúc cùng với những các đại lý tài liệu (database) khác nhau.

Bạn đang xem: Hướng dẫn cách tạo webservice kết nối database

*

DriverManager : là 1 trong class làm chủ danh sách các Driver (database drivers). Các trải nghiệm kết nối từ bỏ vận dụng Java sẽ tiến hành class này tìm kiếm Driver phù hợp thứ nhất nhằm tùy chỉnh cấu hình liên kết với cửa hàng tài liệu.Driver: là một trong những interface dùng để xử lý những tiếp xúc với đại lý dữ liệu. Thông thường vận dụng Java sẽ không còn giao tiếp thẳng với class này mà lại thông qua DriverManager.Connection : là một trong interface cung ứng toàn bộ các method quan trọng mang lại vấn đề giao tiếp với database. Interface này chứa nhiều phương thức phong phú nhằm chế tạo liên kết với cùng một Database. Tất cả những báo cáo tiếp xúc với cửa hàng tài liệu chỉ hoàn toàn có thể trải qua đối tượng người sử dụng Connection. Một Connection đại diện thay mặt cho 1 phiên (session) thao tác cùng với cửa hàng dữ liệu.Statement : là 1 interface cho phép gửi các câu lệnh SQL cho tới Database. Dường như, một số Interface kết thừa từ nó cung thêm những tsi mê số để xúc tiến các thủ tục đã có được lưu trữ (stored procedure).ResultSet : đại diện cho tập phù hợp các bản ghi (record) dành được sau khi tiến hành tróc nã vấn (query).SQLException : class này cách xử trí bất kể lỗi nào xuất hiện trong khi làm việc cùng với Database.

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

Để thao tác với JDBC, bạn phải cài đặt Java với một cửa hàng dữ liệu (database). Quý Khách rất có thể áp dụng ngẫu nhiên database làm sao, ví dụ điển hình MySquốc lộ.

Như vẫn trình làng sống trên, để làm việc cùng với đại lý dữ liệu từ Java rất cần phải bao gồm Driver. Trong 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ị bắt buộc thiết đặt một Driver riêng tương ứng với các đại lý dữ liệu đó. bởi thế các bước cần được làm cho là download tlỗi viện Driver ứng cùng với loại Database mong muốn áp dụng.

Download Driver

Oracle Database JDBC Driver

Truy ctràn lên link: https://www.oracle.com/database/technologies/jdbcdriver-ucp-downloads.html

Chọn phiên bạn dạng ojdbc.jar tương ứng với phiên bạn dạng thực hiện. Chẳng hạn ojdbc6.jar thực hiện đến JDK8, JDK7, và JDK6.

Xem thêm: Hoàn Thiện Thể Chế Kinh Tế Thị Trường Là Gì ? Nội Dung Thể Chế Kinh Tế (Economic Institutions) Là Gì

Nếu áp dụng maven project, những bạn cũng có thể add dependency tương xứng sống links sau: https://mvnrepository.com/artifact/com.oracle.jdbc

com.oracle.jdbc ojdbc14 12.2.0.1MySquốc lộ Database JDBC DriverCác các bạn thêm maven dependency hoặc tải về gói jar tương ứng trên đây: https://mvnrepository.com/artifact/mysql/mysql-connector-java

mysql mysql-connector-java 8.0.17Squốc lộ Server (JTDS) Database JDBC DriverCác các bạn thêm maven dependency hoặc tải về gói jar tương ứng tại đây: https://mvnrepository.com/artifact/net.sourceforge.jtds/jtds

net.sourceforge.jtds jtds 1.3.1PostgreSquốc lộ Database JDBC DriverCác bạn thêm maven dependency hoặc tải về gói jar khớp ứng tại đây: https://mvnrepository.com/artifact/org.postgresql/postgresql

org.postgresql postgresql 42.2.7MariaDB Database JDBC DriverCác bạn thêm maven dependency hoặc tải về gói jar khớp ứng trên đây: https://mvnrepository.com/artifact/org.mariadb.jdbc/mariadb-java-client

org.mariadb.jdbc mariadb-java-client 2.4.4MongoDB Database JDBC DriverCác bạn thêm maven dependency hoặc download gói jar tương ứng tại đây: https://mvnrepository.com/artifact/org.mongodb/mongo-java-driver

org.mongodb mongo-java-driver 3.11.0

Kết nối database trường đoản cú Java

Các bước giao tiếp thân chương trình Java và Database:

Load Driver.Tạo kết nối (Open Connection).Tạo câu lệnh truy hỏi vấn Squốc lộ (Statement).Thực thi câu lệnh truy nã vấn SQL (Exedễ thương Query).Đóng kết nối (Cthua Connection).Load Driver

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

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

Chẳng hạn để kết nối cùng với MySQL database, ta ĐK như sau:

Class.forName("com.mysql.jdbc.Driver");// OrDriverManager.registerDriver(new com.mysql.cj.jdbc.Driver());Tạo liên kết (xuất hiện Connection)Sau lúc đã load Driver, bọn họ chế tạo ra connection:

DriverManager.getConnection(connectionURL);// OrDriverManager.getConnection(connectionURL, web6_userName, password);lấy ví dụ như với MySQL:

// PatternString connectionURL = "jdbc:mysql://hostname:port/dbname";// ExampleString connectionURL = "jdbc:mysql://hostname:3306/jdbcdemo";Connection con = DriverManager.getConnection(connectionURL, web6_username, password);Tạo câu lệnh truy hỏi vấn Squốc lộ (Statement)Sau lúc 1 liên kết được thiết lập, chúng ta cũng có thể liên can cùng với đại lý dữ liệu.

Các interface JDBCStatement, CallableStatement với PreparedStatement xác định những cách tiến hành được cho phép gửi những lệnh Squốc lộ cùng dấn dữ liệu tự đại lý dữ liệu.

Statement st = nhỏ.createStatement();Thực thi câu lệnh truy vấn SQL (Exexinh đẹp Query)Bây giờ mang đến phần đặc biệt quan trọng nhất, đó là thực hiện câu lệnh truy nã vấn Squốc lộ (exexinh tươi query). Như họ biết, có thể có tương đối nhiều loại truy tìm vấn. Một trong những đó là:

Truy vấn để update (update) / cnhát (insert)/ xóa (delete) vào đại lý tài liệu.Truy vấn để mang dữ liệu (select).

Statement hỗ trợ một số cách làm nhằm thực thi truy vấn vấn Squốc lộ khớp ứng với các một số loại trên:

Phương thơm thức execQuery() : được áp dụng để triển khai các truy tìm vấn truy xuất quý hiếm từ các đại lý dữ liệu (select). Phương thơm thức này trả về đối tượng người dùng ResultSet hoàn toàn có thể được áp dụng để đưa toàn bộ những tài liệu (record) của bảng.Pmùi hương thức execUpdate() : được áp dụng để triển khai những truy tìm vấn insert/ update/ delete.Phương thức execute() : có thể xúc tiến cả hai trường vừa lòng trên. Nếu cách tiến hành statement.getUpdateCount() trả về số lượng record bị affect.Nếu quý giá > 0, Tức là thực hiện các câu lệnh insert/ update/ delete.Nếu quý giá = 0, có nghĩa là thực hiện những câu lệnh insert/ update/ delete không tồn tại cái 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 quý giá = -1, có nghĩa là xúc tiến câu lệnh select. khi đó, có thể Call 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 kết nối (Cthua thảm Connection)Cuối cùng, sau khi đang thực hiện họ rất cần được Hotline thủ tục close() để đóng liên kết (Connection) với giải pngóng tài nguyên.

Bằng bí quyết đóng liên kết, các đối tượng người sử dụng của Statement và ResultSet sẽ được đóng tự động hóa. Tuy nhiên, bọn họ phải tập kinh nghiệm close() Statement sau thời điểm áp dụng tuyệt vì mong chờ điều ấy xảy ra Khi nó tự động bị đóng nhằm giải pchờ tài nguyên ổn. Đặc biệt giả dụ họ xúc tiến Statement trong vòng lặp, thì hoàn toàn có thể đã gặp vụ việc về thiếu tài nguyên áp dụng ví như chờ đợi nó tự động hóa đóng.

Lúc Statement được close() thì ResultSet của Statement cũng rất được cthảm bại.

Chương thơm trình Java liên kết cơ sử tài liệu thực hiện JDBC API

Chương thơm trình dưới chỉ đơn giản dễ dàng thực hiện kết nối đến cửa hàng dữ liệu MySquốc lộ cùng thêm một chiếc tài liệu vào bảng web6_user.

package com.daiquansu.mobi;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 web6_userName = "root";private static final String password = "";// jdbc:mysql://hostname:port/dbnameprivate 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. xuất hiện connectionConnection bé = DriverManager.getConnection(connectionURL, web6_userName, password);// 3. Create StatementStatement st = nhỏ.createStatement();// 4. Exeđáng yêu queryString sqlInsert = "INSERT INTO web6_user(web6_username, password, createdDAte) VALUE("daiquansu.mobi", "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 connectionbé.close();Thực thi lịch trình bên trên ta tất cả kết quả sau:

inserted successfully : 1Lưu ý: chúng ta nên được sắp xếp câu lệnh close() vào finally bloông xã trong câu lệnh try-catch-finally hoặc thực hiện tính năng vượt trội try-with-resource nhằm bảo đảm an toàn resource luôn luôn được close sau khi thực hiện. Ví dụ:

package com.daiquansu.mobi;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 web6_userName = "root";private static final String password = "";// jdbc:mysql://hostname:port/dbnameprivate 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. mở cửa connectionConnection nhỏ = DriverManager.getConnection(connectionURL, web6_userName, password);// 3. Create StatementStatement st = con.createStatement();) // 4. Execute queryString sqlInsert = "INSERT INTO web6_user(web6_username, password, createdDAte) VALUE("daiquansu.mobi", "123", now());";int numberRowsAffected = st.executeUpdate(sqlInsert);if (numberRowsAffected == 0) System.out.println("insertion failed"); else System.out.println("inserted successfully : " + numberRowsAffected);// 5. Cđại bại connection: will be tự động closed by try-with-resourceTrên đấy là một trong những kỹ năng cơ bản về kết nối cửa hàng tài liệu với Java JDBC. Trong bài viết tiếp sau, chúng ta đã thuộc mày mò sâu hơn về những API của JDBC.