1. Trang chủ
  2. » Công Nghệ Thông Tin

Bài giảng Lập trình Java – Chương 3: Lập trình Java kết nối với CSDL bằng JDBC

43 115 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 43
Dung lượng 1,59 MB

Nội dung

Bài giảng Lập trình Java Chương 3: Lập trình Java kết nối với CSDL bằng JDBC cung cấp cho người học các kiến thức: Giới thiệu JDBC, một số Class và Interface của JDBC API thường dùng, các bước thực hiện truy cập CSDL sử dụng JDBC,... Mời các bạn cùng tham khảo.

LOGO Phát triển UD CSDL Chương 3: Lập trình Java kết nối với CSDL JDBC JAVA DATABASE CONNECTIVITY • Giới thiệu JDBC • Một số Class Interface JDBC API thường dùng • Các bước thực truy cập CSDL sử dụng JDBC – Bước 1: Đăng ký driver – Bước 2: Tạo đối tượng kết nối đến CSDL – Bước 3: Tạo đối tượng để thực lệnh thao tác lên CSDL & Xây dựng câu lệnh tương ứng (đọc,thêm, xóa, sửa) – Bước 4: Thực lệnh – Bước 5: Xử lý kết trả (optional) – Bước 6: Đóng kết nối • ExecuteBath / Xử lý lỗi ngoại lệ / Transaction • Store Procedure JDBC • JDBC (Java Database Connectivity) cung cấp cho java developer tập interface chuẩn dùng để truy xuất liệu quan hệ • JDBC phát triển JavaSoft Kiến trúc JDBC • Khi làm việc với JDBC, java developer làm việc nh hệ sở liệu khác • Java developer khơng phụ thuộc vào hệ sở liệu cụ thể • Java developer không cần phải quan tâm đến khác giao tiếp với HQTCSDL khác Kiến trúc JDBC Kiến trúc JDBC Hoạt động JDBC JDBC API • Class Interface JDBC API thuộc gói java.sql • DriverManager dùng để nạp driver tạo Connection đến sở liệu • Driver: Driver sở liệu, JDBC Driver cài đặt lại Interface • Connection :Thiết lập Connection đến sở liệu cho phép tạo Statement • Statement: Gắn kết với connection đến sở liệu cho phép thực thi câu lệnh SQL • CallableStatement tương tự Statement áp dụng cho Store procedures JDBC API • PreparedStatement: Tương tự Statement áp dụng cho Precompiled SQL • ResultSet: Cung cấp thơng tin rút trích từ sở liệu , cho phép truy xuất dịng liệu • ResultSetMetaData: Cung cấp thông tin kiểu liệu thuộc tính Resultset • DatabaseMetaData: Cung cấp thông tin sở liệu kết nối • SQLException: Cung cấp thông tin ngoại lệ xảy tương tác với sở liệu JDBC API 5b Thêm liệu bảng NHANVIEN … String manv = … String hoten = … float luong = … Statement statement = connection.createStatement(); String sql = String.format ("INSERT INTO NHANVIEN (MANV, HOTEN, LUONG, …) VALUES ('%s' , '%s', %f , …)", manv, hoten, luong, … ) int n = statement.executeUpdate(sql); if (n == 1){ System.out.println(" Thêm thành công !!!"); 10 } else { 11 System.out.println("Lỗi !!!"); 12 13 } 14 connection.close(); 15 5b Thêm liệu bảng PHONGBAN … String tenphong = … Statement statement = connection.createStatement(); String sql = String.format ("INSERT INTO PHONGBAN (TENPHONG) VALUES ('%s' ", tenphong ) int n = statement.executeUpdate(sql, Statement.RETURN_GENERATED_KEYS ); System.out.println(" Thêm thành công !!!"); ResultSet rs=statement.getGeneratedKeys(); if(rs.next()){ 10 int maDanhMuc = rs.getInt(1); 11 } 13 } else { 14 System.out.println("Lỗi !!!"); 15 } 16 18 System.out.println("Mã danh mục vừa thêm: "+maDanhMuc); 12 17 Khóa tự động tăng if (n > 0){ connection.close(); 5b Thêm liệu bảng PHONGBAN Statement statement = connection.createStatement(); String[] arrPhong = {“PB1", “PB2", "PB3"}; String sql = "INSERT INTO PHONGBAN (TENPHG) VALUES "; for (int i=0; i < arrPhong.length; i++){ sql = sql + String.format("('%s')", arrPhong[i]); if( i < arrPhong.length-1){ sql = sql + ", "; } } sql: INSERT INTO PHONGBAN (TENPHG) VALUES ('PB1'), ('PB2'), ('PB3') int n = statement.executeUpdate(sql, Statement.RETURN_GENERATED_KEYS); 10 if (n > 0) { 11 System.out.println("Thêm thành công !!!"); 12 ResultSet rs = statement.getGeneratedKeys(); 13 while (rs.next()){ Khóa tự động tăng 14 int maphong = rs.getInt(1); 15 System.out.println("Mã phòng ban vừa thêm: " + maphong); 16 } 17 } 18 connection.close(); Đóng kết nối • Sử dụng close() đối tượng Connection package demojdbc; import java.sql.*; import java.util.Properties; public class DemoJDBC { public static void main(String[] args){ … //1 Đăng ký driver tạo kết nối đến CSDL //2 Tạo kết nối đến CSDL … 10 //6 Đóng kết nối 11 connection.close(); 12 … 13 14 } } executeBatch String sql1="INSERT INTO DANHMUC(TENDANHMUC) VALUES('Java')"; String sql2="INSERT INTO DANHMUC(TENDANHMUC) VALUES('PHP')"; String sql3="UPDATE DANHMUC SET TENDANHMUC='C' WHERE MADANHMUC=43"; Statement statement=connection.createStatement(); statement.addBatch(sql1); statement.addBatch(sql2); statement.addBatch(sql3); 10 int [] arrResult = statement.executeBatch(); 11 arrResult [i] : Số dòng bị ảnh hưởng câu lệnh SQL thứ i Xử lý ngoại lệ package demojdbc; import java.sql.*; import java.util.Properties; public class DemoJDBC { public static void main(String[] args){ try { //1 Đăng ký driver tạo kết nối đến CSDL //2 Tạo kết nối đến CSDL … 10 //6 Đóng kết nối 11 } catch (SQLException ex) { 12 System.out.println(ex); 13 } 14 15 } } PreparedStatement public static void main(String[] args){ try { … String sql = "INSERT INTO T(X, Y) VALUES ( ? , ? )"; PreparedStatement statement = connection.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS); statement.setString(1, "Value Of X"); statement.setString(2, "Value Of Y"); int n = statement.executeUpdate(); 10 … 11 connection.close(); 12 } catch (SQLException ex) { 13 System.out.println(ex); 14 15 16 } } Sử dụng Transaction try { String sql1= insert/delete/update String sql2= insert/delete/update Connection =DriverManager.getConnection( cs, info); try{ con.setAutoCommit(false); Statement statement1= con.createStatement(); Statement statement2= con.createStatement(); statement1.executeUpdate(sql1); 10 statement2.executeUpdate(sql2); 11 con.commit(); 12 }catch (SQLException ex){ 13 con.rollBack(); 14 }finally{ 15 16 17 con.close(); } } catch (SQLException ex) { //Xử lý lỗi } Sử dụng Transaction String sql1= insert/delete/update String sql2= insert/delete/update Connection =DriverManager.getConnection( cs, info); try{ con.setAutoCommit(false); Statement statement1= con.createStatement(); Statement statement2= con.createStatement(); statement1.executeUpdate(sql1); statement2.executeUpdate(sql2); 10 if(điều kiện commit){ 11 con.commit(); 12 }else{ 13 14 15 con.rollBack(); } }catch (SQLException ex){ 16 //Xử lý lỗi 17 }finally{ con.close(); } Sử dụng Transaction String sql1= insert/delete/update String sql2= insert/delete/update Connection =DriverManager.getConnection( cs, info); try{ con.setAutoCommit(false); Statement statement1= con.createStatement(); Statement statement2= con.createStatement(); Savepoint save1 = con.setSavepoint(); statement1.executeUpdate(sql1); 10 statement2.executeUpdate(sql2); 11 if(điều kiện commit){ 12 13 con.commit(); }else{ 14 15 16 con.rollBack(save1); } }catch (SQLException ex){ 17 //Xử lý lỗi 18 }finally{ con.close();} … Sử dụng Transaction Date ngaysinh = sdf.parse("1999-08-25"); Date d = sdf.parse("2000-1-1"); String sql = "INSERT INTO NHANVIEN VALUES …”; Connection connection = null; … connection = DriverManager.getConnection(conString, info); try { connection.setAutoCommit(false); 10 Statement statement = connection.createStatement(); 11 statement.executeUpdate(sql); 12 if ( ngaysinh.after(d)) { 13 connection.rollback(); 14 System.out.println("NGAYSINH MUST BE BEFORE 1/1/2000"); 15 } else { 16 17 connection.commit(); } 18 } catch (SQLException ex) { 19 System.out.println(ex); 20 } finally {connection.close();} CallableStatement - Xử lý Store Procedure DELIMITER$$ CREATE PROCEDURE spThemDanhMuc ( in tenDanhMuc VARCHAR (45)) BEGIN INSERT INTO DANHMUC(TENDANHMUC) VALUES (tenDanhMuc); SELECT LAST_INSERT_ID(); END String tenDanhMuc = "C++"; CallableStatement statement = connection.prepareCall("{call spThemDanhMuc(?)}"); statement.setString(1, tenDanhMuc); statement.execute(); ResultSet rs = statement.getResultSet(); if (rs.next()) { int maDanhMuc = rs.getInt(1); 10 System.out.println(maDanhMuc); 11 } CallableStatement - Xử lý Store Procedure CallableStatement - Xử lý Store Procedure DELIMITER$$ CREATE PROCEDURE spThemDanhMuc ( in tenDanhMuc VARCHAR (45), out maDanhMuc int ) BEGIN INSERT INTO DANHMUC(TENDANHMUC) VALUES (tenDanhMuc); SET maDanhMuc = LAST_INSERT_ID(); END String tenDanhMuc = "C++"; CallableStatement statement = connection.prepareCall("{call spThemDanhMuc (? , ?)}"); statement.setString(1, tenDanhMuc); statement.registerOutParameter(2,Types.INTEGER); statement.execute(); int maDanhMuc = statement.getInt(2); System.out.println(maDanhMuc); MySQL • Cài đặt MySQL server – WAMP • IDE: – phpMyAdmin (tích hợp sẵn WAMP) – MySQL Workbench 5.2 CE ... đến CSDL – Bước 3: Tạo đối tượng để thực lệnh thao tác lên CSDL & Xây dựng câu lệnh tương ứng (đọc,thêm, xóa, sửa) – Bước 4: Thực lệnh – Bước 5: Xử lý kết trả (optional) – Bước 6: Đóng kết nối. .. Procedure JDBC • JDBC (Java Database Connectivity) cung cấp cho java developer tập interface chuẩn dùng để truy xuất liệu quan hệ • JDBC phát triển JavaSoft Kiến trúc JDBC • Khi làm việc với JDBC, java. .. DriverManager.registerDriver(driver); – Các package cần sử dụng: import java. sql.Connection; import java. sql.Driver; import java. sql.DriverManager; Bước 2: Tạo & mở kết nối đến CSDL • CSDL minh họa: – Name: NhanVienDB – MySQL

Ngày đăng: 16/07/2020, 10:49

HÌNH ẢNH LIÊN QUAN

5a. Lấy dữ liệu từ bảng PHONGBAN - Bài giảng Lập trình Java – Chương 3: Lập trình Java kết nối với CSDL bằng JDBC
5a. Lấy dữ liệu từ bảng PHONGBAN (Trang 23)
5b. Xóa dữ liệu bảng PHONGBAN - Bài giảng Lập trình Java – Chương 3: Lập trình Java kết nối với CSDL bằng JDBC
5b. Xóa dữ liệu bảng PHONGBAN (Trang 25)
5b. Xóa dữ liệu bảng NHANVIEN - Bài giảng Lập trình Java – Chương 3: Lập trình Java kết nối với CSDL bằng JDBC
5b. Xóa dữ liệu bảng NHANVIEN (Trang 26)
5b. Thêm dữ liệu bảng NHANVIEN 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 … - Bài giảng Lập trình Java – Chương 3: Lập trình Java kết nối với CSDL bằng JDBC
5b. Thêm dữ liệu bảng NHANVIEN 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 … (Trang 29)

TỪ KHÓA LIÊN QUAN