Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 34 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
34
Dung lượng
323 KB
Nội dung
LẬPTRÌNHJAVA NC Chương 06: Truycập cơ sởdữliệuvớiJDBC Lê Tân Bộ môn: Lậptrình máy tính Nội dung của chương 06 Khái niệm JDBC Các bước truy cậpcơsởdữliệu với JDBC – Nạp database drivers – Tạo kết nối sử dụng đối tượng Connection – Tạo đối tượng Statement để thực thi các lệnh sql. Lớp DriverManager và Connection Lớp Statement và PreparedStatement Lớp ResultSet và ResultSetMetaData Transaction Cập nhật ResultSet Tổng quan JDBC cung cấp tập các lớp và interface cho phép chương trìnhJavacó thể “nói chuyện” được với hệ CSDL Tập các lớp của JDBCcó thể làm việc được với mọi hệ csdl. Kết nối CSDL Có 3 bước chính để kết nối CSDL. – Nạp database drivers – Tạo kết nối sử dụng đối tượng Connection – Tạo đối tượng Statement để thực thi các lệnh sql. Ví dụ Chuẩn bị CSDL: Cài đặt một hệ quản trị CSDL cótrình điều khiển ODBC cài đặt sẵn như ORACLE, SQL Server, MS Access . . . Thiết kế cơsởdữ liệu: Tạo CSDL, tạo bảng, tạo chỉ mục . . . cho ứng dụng trên nền hệ quản trị CSDL chuẩn trên (ví dụ: MS Access) Tạo đối tượng ODBC Tạo đối tượng ODBC Khởi động trình ứng dụng Control Panel Khởi động Administrative Tools Chọn Data Source (ODBC) Chọn System DSN, Add Chọn Driver của hệ quản trị cơsởdữliệu tương ứng (ví dụ: MS Access) Tạo đối tượng ODBC (tt) Trong khung Data Source Name: gõ tên đối tượng ODBC của CSDL (ví dụ: ATM) Chọn Select rồi chọn CSDL đã tạo Nạp trình điều khiển và tạo kết nối try{ Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); String url = "jdbc:odbc:ATM"; Connection con=DriverManager.getConnection(url); Statement stmt = con.createStatement(); : : }catch(Exception e){ } Với Oracle, thay vì sử dụng Class.forName(), ta sử dụng: DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver()); Database URL Database URL là một chuỗi được dùng để kết nối csdl. cú pháp : jdbc:subprotocol name:other_stuff The subprotocol name được dùng tuỳ vào loại driver sử dụng để kết nối csdl. ví dụ : subprotocol name là odbc nếu driver là cầu nối jdbcodbc Other_stuff cũng phụ thuộc vào loại driver nào được sử dụng. ví dụ nếu driver là cầu nối jdbcodbc thì thành phần này là tên của đối tượng ODBC Có thể có tên truycập và mật khẩu Với Oracle, url = “jdbc:oracle:oci8:@MyDB” Database Driver Bảo đảm ứng dụng java tương tác với mọi csdl dưới một cách thức chuẩn và duy nhất. Bảo đảm những yêu cầu từ chương trình sẽ được biểu diễn trong csdl dưới một ngôn ngữ mà csdl hiểu được Nhận các yêu cầu từ client, chuyển nó nó vào định dạng mà csdl có thể hiểu được và thể hiện trong csdl. Nhận các phản hồi, chuyển nó ngược lại định dạng dữliệujava và thể hiện trong ứng dụng. [...]... liệu từ việc thực hiện câu lệnh truy vấn Có thể lấy dữliệu từng hàng dữliệu một trong ResultSet Sử dụng phương thức next() để di chuyển đến hàng dữliệu tiếp theo trong ResultSet Hàm next() trả lại true chỉ rằng hàng chứa dữ liệu, trả lại false hàng cuối không chứa dữliệu Thực hiện while (rs.next()){ // examine a row from the results } Sử dụng ResultSet Để lấy dữ liệu ở các cột trên mỗi hàng của... JDBC Driver – – – – Loại 1: JDBC/ ODBC Loại 2: Native-API Loại 3: Open Protocol-Net Loại 4: Proprietary-Protocol-Net Loại 2,3,4 nói chung được viết bởi nhà cung cấp csdl, hiệu quả hơn loại 1 nhưng thực hiện phức tạp hơn Loại 1: JDBC/ ODBC jdk hỗ trợ cầu nối jdbc- odbc (jdbc- odbc bridge) Mềm dẻo nhưng không hiệu quả Aplication Aplication JDBC Driver JDBC Driver Client Disk Disk ODBC Driver ODBC Driver... csdl – Tất cả bằng mã java Aplication Aplication Client JDBC Driver Client JDBC Driver Client Disk Disk Network Interface Network Interface Server JDBC Driver Server JDBC Driver Server Databas e Native Database Native Database Library Library Loại 4: Proprietary-Protocol Net 100% javaCó khả nănggiao tiếp trực tiếp với hệ CSDL không cần chuyển đổi Aplication Aplication JDBC Driver JDBC Driver Client... ('ABC','101',6.99,0,0)"); stmt.close(); conn.close(); } catch (java. sql.SQLException e) { System.err.print(“SQLException:"); System.err.println(e.getMessage()); }}} Ví dụ: Chương trình cập nhật dữliệu Tạo một bảng dữliệu bằng MS Access, chứa mã sinh viên, họ tên, điểm thi các môn Toán, Lý, Hoá Sau đó viết chương trình thêm, xoá bản ghi, sửa số liệu, tìm kiếm bản ghi theo mã sinh viên ... sun .jdbc. odbc.JdbcOdbcDriver()); hoặc Class.forName(String); – This returns the object associated with the class with the given string name – Class.forName(“sun .jdbc. odbc.JdbcOdbcDriver”); Equivalent to: new sun .jdbc. odbc.JdbcOdbcDriver(); If you have a driver from another vendor, then find out the class name of that driver and load it instead JDBC Driver Có 4 loại JDBC Driver – – – – Loại 1: JDBC/ ODBC... Server Loại 2: Native-API Tốt hơn loại 1, loại này cho phép JDBCgiao tiếp trực tiếp với các driver hay các hàm API của CSDL Aplication Aplication JDBC Driver JDBC Driver Client Disk Disk Native Database Library Native Database Library Network Interface Network Interface Databas e Server Loại 3: Open Protocol-Net Drivers – Có thể chuyển các yêu cầu đến các csdl nằm ở xa – Có thể giao tiếp với nhiều loại... record: rs.absolute(3); //Nhảy đến record cần xóa (chỉ dùng absolute) rs.deleteRow(); //Xác nhận xóa record Chương trình mẫu import java. sql.*; class JDBCDemo1 { public static void main(String[ ] args) { try{ Class.forName("sun .jdbc. odbc.JdbcOdbcDriver"); Connection con=DriverManager.getConnection( "jdbc: odbc:Accserver"); Statement stmt = con.createStatement(); ResultSet rs = stmt.executeQuery(args[0]); ResultSetMetaData... rs.close(); stmt.close(); } catch(Exception e){ System.out.println("Error " + e); }}} Chương trình mẫu 2 import java. sql.*; public class CreateTable { public static void main(String[] args) { String url = "jdbc: odbc:vd1";Connection conn;Statement stmt; try { Class.forName ("sun .jdbc. odbc.JdbcOdbcDriver"); } catch (java. lang.ClassNotFoundException e) {} try { conn = DriverManager.getConnection(url); stmt... lệnh sql dạng cập nhật – Trả lại số nguyên biểu thị số hàng được cập nhật – UPDATE, INSERT, or DELETE Phương thức execute() – Được áp dụng cho trường hợp không rõ loại sql nào được thực hiện, trả về kiểu boolean, true nếu đó là executeQuery() -> getResultSet() để lấy kết quả – Được áp dụng cho trường hợp câu lệnh sql tạo ra tự động bởi chương trình ResultSet Chứa một hoặc nhiều hàng dữliệu từ việc... a row from the results } Sử dụng ResultSet Để lấy dữliệu ở các cột trên mỗi hàng của ResultSet, ta dùng các phương thức – getXXX(int | String) //XXX là kiểu của dữliệu cần lấy Đối số là chỉ số cột tính từ 1 Áp dụng cho các cột có kiểu dữliệu là int, float, Date – Ví dụ : String isbn = rs.getString(1); // Column thứ 1 float price = rs.getDouble(“Price”); // Column có tên “Price” Các phương thức getXXX() . LẬP TRÌNH JAVA NC Chương 06: Truy cập cơ sở dữ liệu với JDBC Lê Tân Bộ môn: Lập trình máy tính Nội dung của chương 06 Khái niệm JDBC Các bước truy cập cơ sở dữ liệu với JDBC – Nạp database. sun .jdbc. odbc.JdbcOdbcDriver()); hoặc Class.forName(String); – This returns the object associated with the class with the given string name. – Class.forName(“sun .jdbc. odbc.JdbcOdbcDriver”); Equivalent to: new sun .jdbc. odbc.JdbcOdbcDriver(); If you have. csdl. ví dụ : subprotocol name là odbc nếu driver là cầu nối jdbcodbc Other_stuff cũng phụ thuộc vào loại driver nào được sử dụng. ví dụ nếu driver là cầu nối jdbcodbc thì thành phần này