Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 47 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
47
Dung lượng
823,5 KB
Nội dung
LẬP TRÌNH JAVAChươngTRUYCẬPCƠSỞDỮLIỆUVỚIJDBC GV: Đoàn Thanh Sơn Nội dung Giới thiệu JDBC JDBC Drivers Thiết lập kết nối Database Tạo câu lệnh truy vấn Thực thi câu truy vấn xử lý kết Ví dụ Transaction 2/25 Giới thiệu JDBC Viết tắt Java Database Connectivity JDBC API thư viện chứa lớp giao diện hỗ trợ lập trình viên Java kết nối truycập đến hệ sởliệu Các chức • Thiết lập kết nối đến Database • Tạo câu lệnh truy vấn SQL • Thực thi câu lệnh truy vấn • Xem sửa đổi kết truy vấn 3/25 Cấu trúc JDBC kiến trúc JDBC gồm tầng: • tầng JDBC API: chuyển câu lệnh SQL cho quản lý trình điều khiển JDBC • tầng JDBC Driver thực nhiệm vụ liên hệ với trình điều khiển hệ quản trị sởliệu cụ thể 4/25 JDBC Driver Trình điều khiển JDBC đoạn chương trình, nhà xây dựng hệ quản trị CSDL nhà cung ứng thứ ba cung cấpCó khả yêu cầu hệ quản trị CSDL cụ thể thực câu lệnh SQL Danh sách trình điều khiển JDBC cho hệ quản trị CSDL khác Sun cung cấpcập nhật liên tục địa chỉ: http://industry.java.sun.com/products/jdbc/drivers JDBC Driver Có loại 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 1: JDBC/ODBC jdk hỗ trợ cầu nối jdbc-odbc sử dụng phổ biến ngày đầu Java xuất Trình điều khiển loại cung cấp kèm J2SE với tên: sun.jdbc.odbc.JdbcOdbcDriver Loại 2: Native API Driver Chuyển lời gọi JDBC API sang thư viện hàm (API) tương ứng với hệ CSDL cụ thể Do nhà xây dựng hệ CSDL cung cấp Để có thề thi hành chương trình cần phải có mã lệnh để làm việc với hệ CSDL cụ thể kèm vớichương trình Loại 3: JDBC-Net Driver Chuyển lời gọi JDBC API sang dạng chuẩn độc lập với hệ CSDL Sau chuyển sang lời gọi hệ CSDL cụ thể chương trình trung gian Do nhà cung ứng thứ Không cần mã lệnh kèm theo trình điều khiển để truycập đến nhiều hệ CSDL khác Loại 4: Native Protocol Driver 100% java Có khả giao tiếp trực tiếp với hệ CSDL không cần chuyển đổi Thực thi câu truy vấn Sử dụng phương thức • boolean execute(String SQL): trả lại true kết trả câu lệnh truy vấn ResultSet • int executeUpdate(String SQL): trả lại số row bị ảnh hưởng, sử dụng cho Insert, Update, Delete • ResultSet executeQuery(String SQL): trả lại đối tượng ResultSet, sử dụng cho Select Ví dụ ResultSet rs = statement.executeQuery(“select * from tblEmployer”); int n=statement.executeUpdate(“update tblEmployer set age=’40’ where id=‘1’ ”); 33/25 Bước 4: Xử lý kết trả ResultSet cung cấp phương thức để xử lý kết trả từ câu lệnh SQL ResultSet chứa liệu theo dạng Table Truycập hàng liệu cách di chuyển trỏ ResultSet Ban đầu, trỏ hàng 34/25 Bước 4: Xử lý kết trả Các loại ResultSet (ResultSet Types): xét loại trỏ phản ánh thay đổi liệu • ResultSet.TYPE_FORWARD_ONLY (mặc định): trỏ dịch chuyển tiến đến ResultSet • ResultSet.TYPE_SCROLL_INSENSITIVE: trỏ dịch chuyển đến lùi, ResultSet không cập nhật thay đổi Database sau tạo • ResultSet.TYPE_SCROLL_SENSITIVE: trỏ dịch chuyển đến lùi, ResultSet cập nhật thay đổi Database sau tạo 35/25 Bước 4: Xử lý kết trả Các loại ResultSet (ResultSet Concurrency): xét chức thay đổi liệu • ResultSet.CONCUR_READ_ONLY (mặc định): ResultSet đọc • ResultSet.CONCUR_UPDATABLE: ResultSet thay đổi liệu 36/25 Bước 4: Xử lý kết trả Loại ResultSet xác định đồng thời lúc tạo đối tượng statement • createStatement(int RSType, int RSConcurrency); • prepareStatement(String SQL, int RSType, int RSConcurrency); • prepareCall(String SQL, int RSType, int RSConcurrency); RSType: định ResultSet Types RSConcurrency: định ResultSet Concurrency 37/25 Bước 4: Xử lý kết trả Ví dụ Statement stmt = conn.createStatement( ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY); Các loại phương thức ResultSet • Các phương thức di chuyển trỏ • Các phương thức lấy liệu ResultSet • Các phương thức cập nhật liệu 38/25 Bước 4: Xử lý kết trả Các phương thức di chuyển trỏ public void beforeFirst() throws SQLException di chuyển đến vị trí bắt đầu ResultSet public void afterLast() throws SQLException di chuyển đến vị trí cuối ResultSet public boolean first() throws SQLException di chuyển đến hàng public void last() throws SQLException public boolean absolute(int row) throws SQLException public boolean relative(int row) throws SQLException di chuyển đến hàng cuối di chuyển đến hàng định public boolean previous() throws SQLException public boolean next() throws SQLException di chuyển đến hàng đứng phía trước public int getRow() throws SQLException trả lại vị trí hàng mà trỏ đến public void moveToInsertRow() throws SQLException public void moveToCurrentRow() throws SQLException di chyển đến hàng để chèn liệu Vị trí lưu lại di chuyển lại vị trí cũ trỏ đến vị trí hàng vừa chen39/25 di chuyển đến hàng cách row hàng từ vị trí tại, row dương di chuyển cuối ResultSet ngược lại di chuyển đến hàng Bước 4: Xử lý kết trả Các phương thức lấy liệu ResultSet • getXXX(String columnName) throws SQLException • getXXX(int columnIndex) throws SQLException XXX: kiểu tương ứng liệu columnName: tên cột ResultSet columnIndex: số cột ResultSet, 40/25 Câu lệnh insert public void addMovie(Movie movie){ System.out.println(“Adding movie: “ + movie.toString()); try{ Statement addMovie = connection.createStatement(); String sql = “INSERT INTO Movies VALUES(“ + movie.getNumber() + “, “ + “‘“ + movie.getMovieTitle() + “‘, “ + “‘“ + movie.getCategory() + “‘, “ + “‘“ + movie.getFormat() + “‘)”; System.out.println(“Executing statement: “ + sql); addMovie.executeUpdate(sql); addMovie.close(); System.out.println(“Movie added successfully!”); } catch(SQLException e){ e.printStackTrace(); }}} 41/25 Câu lệnh insert Movie [] movies = new Movie[6]; movies[0] = new Movie(1, “Star Wars: A New Hope”, “Science Fiction”, “DVD”); movies[1] = new Movie(2, “Citizen Kane”, “Drama”, “VHS”); movies[2] = new Movie(3, “The Jungle Book”, “Children”, “VHS”); movies[3] = new Movie(4, “Dumb and Dumber”, “Comedy”, “DVD”); movies[4] = new Movie(5, “Star Wars: Attack of the Clones”, “Science Fiction”, “DVD”); movies[5] = new Movie(6, “Toy Story”, “Children”, “DVD”); 42/25 Câu lệnh insert for(int i = 0; i < movies.length; i++){ db.addMovie(movies[i]); } System.out.println(“Closing the connection ”); connection.close(); } catch(Exception e){ e.printStackTrace(); }}} 43/25 Bước 4: Xử lý kết trả Các phương thức cập nhật liệu • Cập nhật liệu ResultSet public void updateXXX(int columnIndex, XXX s) throws SQLException public void updateXXX(String columnName, XXX s) throws SQLException • Cập nhật liệu từ ResultSet đến Database public void updateRow() Cập nhật thay đổi hàng ResultSet đến Database public void deleteRow() Xóa hàng Database public void refreshRow() Lấy liệu Database vào ResultSet public void cancelRowUpdates() Hủy bỏ thay đổi liệu vừa thực public void insertRow() Chèn liệu hàng ResultSet vào Database 44/25 Bước 5: Đóng kết nối Sử dụng phương thức close() Ví dụ rs.close(); stmt.close(); conn.close(); 45/25 Transaction Transaction: khối thao tác cần thực tương ứng với Kết nối JDBC mặc định chế độ auto-commit: câu lệnh SQL hoàn thành riêng lẻ Một transaction bắt đầu chấm dứt chế độ auto-commit kết thúc đối tượng kết nối thực phương thức commit() 46/25 Transaction Các phương thức • conn.setAutoCommit(false): tắt chế độ auto-commit • conn.commit(): xác nhận thay đổi đến Database kết thúc transaction • conn.rollback(): hủy bỏ tất thay đổi Database từ vị trí bắt đầu transaction 47/25 ... trình viên Java kết nối truy cập đến hệ sở liệu Các chức • Thiết lập kết nối đến Database • Tạo câu lệnh truy vấn SQL • Thực thi câu lệnh truy vấn • Xem sửa đổi kết truy vấn 3/25 Cấu trúc JDBC ... 4: Proprietary-Protocol-Net Loại 1: JDBC/ ODBC jdk hỗ trợ cầu nối jdbc- odbc sử dụng phổ biến ngày đầu Java xuất Trình điều khiển loại cung cấp kèm J2SE với tên: sun .jdbc. odbc.JdbcOdbcDriver... cung cấp cập nhật liên tục địa chỉ: http://industry .java. sun.com/products /jdbc/ drivers JDBC Driver Có loại JDBC Driver • Loại 1: JDBC/ ODBC • Loại 2: Native-API • Loại 3: Open Protocol-Net •