intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Kết nối cơ sở dữ liệu với JDBC

Chia sẻ: Nguyen Van Dai | Ngày: | Loại File: PDF | Số trang:7

79
lượt xem
5
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Hiểu các khái niệm và thuật ngữ, ý tưởng của JDBC. Hiểu và vận dụng tốt 6 bước truy xuất CSDL Nắm vững các vấn đề liên quan đến truy xuất CSDL: các loại statement, các cách thi hành câu lệnh sql, cách truy xuất ResultSet Hiểu transaction và cơ chế quản lý trong JDBC

Chủ đề:
Lưu

Nội dung Text: Kết nối cơ sở dữ liệu với JDBC

  1. Mục tiêu „ Hoàn thành chương nầy, sinh viên cần đạt được những yêu cầu sau Kết nối cơ sở dữ liệu với JDBC „ Hiểu các khái niệm và thuật ngữ, ý tưởng của JDBC. „ Hiểu và vận dụng tốt 6 bước truy xuất CSDL Lập trình hướng đối tượng Java „ Nắm vững các vấn đề liên quan đến truy xuất CSDL: các loại statement, các cách thi hành Chương 7 câu lệnh sql, cách truy xuất ResultSet Biên soạn: Th.S Nguyễn văn Lành „ Hiểu transaction và cơ chế quản lý trong JDBC 1 Bài giảng dành cho sinh viên Cao đẳng Công nghệ 2 Nội dung Giới thiệu chung về JDBC „ Giới thiệu chung về JDBC „ JDBC: chuẩn kết nối CSDL, cung cấp các „ Trình điều khiển JDBC interface & class nhằm tạo cơ sở cho các ứng „ Phân loại dụng Java tương tác với các hệ quản trị CSDL „ Database URL „ Tập hợp các lớp thực thi „ Các lớp tác vụ cơ bản của JDBC theo chuẩn JDBC để „ Statement tương tác với 1 CSDL „ ResultSet cụ thể gọi là JDBC driver „ Quản lý transaction „ Phần lớn ý tưởng của JDBC kế thừa từ chuẩn „ Xử lý đa người dùng kết nối ODBC của Microsoft Bài giảng dành cho sinh viên Cao đẳng Công nghệ 3 Bài giảng dành cho sinh viên Cao đẳng Công nghệ 4 1
  2. JDBC Driver Type I JDBC/ODBC „ Bảo đảm ứng dụng tương tác với DBMS theo 1 cách „ Được cung cấp miễn phí bởi Sun - jdk thức chuẩn thống nhất „ Có thể truy xuất bất kỳ DBMS nào được hổ trợ bởi ODBC driver. „ Chuyển đổi định dạng dữ liệu phù hợp với Java và với „ Tính khả chuyển cao nhưng kém hiệu quả DBMS „ JDBC Driver là người phiên dịch Java-to-SQL Aplication Aplication Client „ Có 4 kiểu JDBC Driver JDBC JDBC Driver Driver Disk Disk „ Type 1: JDBC/ODBC Bridge ODBC ODBC Driver Driver „ Type 2: Native-API Network Interface „ Type 3: Open Protocol-Net Network Interface „ Type 4: Proprietary-Protocol-Net Database „ Kiểu 1 linh hoạt & mềm dẻo nhất Database „ Kiểu 4 hiệu quả nhất Server Bài giảng dành cho sinh viên Cao đẳng Công nghệ 5 Bài giảng dành cho sinh viên Cao đẳng Công nghệ 6 Type 2: Native-API Type 3: Open Protocol-Net „ JDBC driver tương tác trực tiếp với database API „ Tương tác với nhiều DBMS theo giao thức mở „ 1 phần mã Java „ 100% Java code „ 1 phần mã tự nhiên của DBMS „ Cài đặt driver cả 2 phía client & server Aplication Client Aplication Aplication Client Aplication JDBC JDBC Driver Driver Disk Disk JDBC JDBC Driver DriverClient Client Disk Disk Native NativeDatabase DatabaseLibrary Library Network Interface Network Interface Network Interface Network Interface Server JDBC JDBC Driver DriverServer Server Database Database Database Database Native NativeDatabase DatabaseLibrary Library Server Bài giảng dành cho sinh viên Cao đẳng Công nghệ 7 Bài giảng dành cho sinh viên Cao đẳng Công nghệ 8 2
  3. Type 4: Proprietary-Protocol Net Database URL „ 100% java „ Database URL: chuỗi biểu diễn địa chỉ DBMS qui định „ Truy xuất trực tiếp DBMS theo giao thức độc quyền bởi JDBC driver. „ Hiệu quả nhất „ Cú pháp tổng quát jdbc:subprotocol name:other_stuff Aplication Aplication Client „ subprotocol name: qui định bởi driver ghi trong tài liệu sử dụng JDBC của driver. JDBC Driver Driver Disk Disk „ Đối với JDBC-ODBC driver là odbc Network Interface „ Other_stuff: phụ thuộc driver „ Đối với JDBC-ODBC driver là Data Source Name khai báo trong Network Interface Datasource ODBC của Windows Database Database Database „ Ví dụ URL „ Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”); Server Connection con= DriverManager.getConnection(“jdbc:odbc:ATM”); Bài giảng dành cho sinh viên Cao đẳng Công nghệ 9 Bài giảng dành cho sinh viên Cao đẳng Công nghệ 10 Giới thiệu chung.. Nạp Driver „ 6 bước kết nối với CSDL „ DriverManager là lớp quản lý các JDBC „ Nạp trình điều khiển JDBC driver và tạo kết nối connection với DBMS „ Tạo kết nối với DBMS „ Class.forName(String); „ Tạo câu lệnh SQL nhằm thực hiện tác vụ „ Class.forName(“sun.jdbc.odbc.JdbcOdbcDriv mong muốn er”); „ Thi hành câu lệnh SQL „ Tương đương với: „ Xử lý kết quả thi hành new sun.jdbc.odbc.JdbcOdbcDriver(); hoặc „ Đóng kết nối DriverManager.registerDriver(new sun.jdbc.odbc.JdbcOdbcDriver()); „ „ Có thể nạp nhiều driver đồng thời. Bài giảng dành cho sinh viên Cao đẳng Công nghệ 11 Bài giảng dành cho sinh viên Cao đẳng Công nghệ 12 3
  4. Tạo kết nối Câu lệnh Statement „ Tùy theo DBMS việc kết nối yêu cầu định danh người „ Ba loại Statement dùng „ Statement: thi hành câu lệnh tùy ý tại thời điểm chạy „ DriverManager.getConnection(dbURL, user, password) „ PreparedStatement : câu lệnh SQL được biên dịch trước „ DriverManager.getConnection(dbURL) „ CallableStatement: gọi thủ tục trên DBMS „ Kết nối connection tiêu tốn tài nguyên của máy chủ „ Sử dụng kết nối connection để tạo câu lệnh DBMS „ Statement s = con.createStatement(); „ Mở connection khi cần. „ PreparedStatement ps= con.prepareStatement(String); „ Đóng connection khi kết thúc tác vụ „ CallableStatement cs= con.prepareCall(String); „ Connection Pool là giải pháp đa người dùng cho các „ Câu lệnh Statement có thể được sử dụng nhiều lần cho ứng dụng CSDL với tải người dùng lớn. những tác vụ khác nhau, những câu lệnh SQL không liên quan nhau. Bài giảng dành cho sinh viên Cao đẳng Công nghệ 13 Bài giảng dành cho sinh viên Cao đẳng Công nghệ 14 Prepared Statements Callable Statement „ Sử dung PreparedStatement để tăng hiệu quả „ CallableStatement cung cấp câu lệnh gọi thi thi hành câu lệnh SQL hành các thủ tục đã cài đặt sẵn trên DBMS. „ Câu lệnh SQL sẽ được biên dịch 1 lần trước khi „ Cú pháp được gọi thi hành nhiều lần. „ {Call procedure_name(arg1, arg2, ...)} „ Thay đổi đối số mỗi lần thi hành. „ {?= call procedure-name arg1,arg2, ...} PreparedStatement updateAddr = con.prepareStatement( „ "UPDATE Customers SET Address = ? WHERE CustNo= ?"); „ Dấu ? thay chỗ cho các đối số updateAddr.setString(1, “Danang”); „ Các đối số có thể là input (IN parameters), updateSales.setInt(2,1001); output (OUT parameters), hoặc cả 2 (INOUT „ Sau khi thiết lập giá trị đối số, chúng được giữ nguyên parameters). cho đến khi thiết lập giá trị mới hoặc gọi phương thức clearParameters() để xóa giá trị các đối số Bài giảng dành cho sinh viên Cao đẳng Công nghệ 15 Bài giảng dành cho sinh viên Cao đẳng Công nghệ 16 4
  5. CallableStatement Thi hành Statement „ CallableStatement cstmt = con.prepareCall("{call „ Có 3 cách thi hành Statement. Proc(?, ?)}"); „ executeQuery() „ Truyền đối số IN bằng hàm setxxx() kế thừa từ „ executeUpdate() PreparedStatement „ execute() „ Đăng ký đối số OUT trước khi thi hành thủ tục „ registerOutParameter(1,Types.VARCHAR); „ executeQuery() „ Đối số INOUT „ dùng để thi hành các câu lệnh truy vấn stmt1.setString(1,"00000"); Select.. from ..where stmt1.registerOutParameter(1,Types.VARCHAR); „ trả về kết quả truy vấn qua đối tượng ResultSet. „ Các stored procedure không phù hợp trong môi trường „ ResultSet rs = s.executeQuery(“SELECT * FROM Books”); phân tán phức hợp vì nó gắn chặt với 1 DBMS cụ thể Bài giảng dành cho sinh viên Cao đẳng Công nghệ 17 Bài giảng dành cho sinh viên Cao đẳng Công nghệ 18 Thi hành Statement.. ResultSet „ executeUpdate() „ ResultSet cho phép truy xuất đến dữ liệu trả về „ dùng cho câu lệnh cập nhật dữ liệu, từ kết quả truy vấn database. „ trả về số bản ghi chịu ảnh hưởng bởi câu lệnh UPDATE, INSERT, or DELETE. „ truy xuất lần lượt từng trường của bản ghi bằng 1 „ trả về 0 , có nghĩa: con trỏ chỉ đến vị trí hiện hành trong ResultSet „ (1) không có bản ghi nào bị ảnh hưởng „ Gọi hàm next( ) để di chuyển con trỏ hiện hành đến „ (2) thực thi câu lệnh DDL định nghĩa dữ liệu . hàng kế tiếp của ResultSet. „ execute() „ next() trả về true nghĩa là còn dữ liệu để đọc, ngược lại: no „ khi không biết rõ câu lệnh là truy vấn hay cập nhật. row „ dùng cho các trường hợp thực thi SQL động., „ sử dụng cấu trúc lặp sau đây để duyệt 1 ResultSet „ trả về true nếu câu lệnh là truy vấn. while (rs.next()){ „ gọi getResultSet() để nhận được kết quả truy vấn // duyệt từng hàng và từng cột – forward only „ gọi getUpdatedCount() để biết số bản ghi đã cập nhật. } Bài giảng dành cho sinh viên Cao đẳng Công nghệ 19 Bài giảng dành cho sinh viên Cao đẳng Công nghệ 20 5
  6. Xử lý ResultSet.. ResultSet & Database Metadata „ Dữ liệu tại mỗi trường của bản ghi được đọc „ ResultSetMetadata là lớp cung cấp thông tin về bản bởi hàm get() theo mẫu: thân ResultSet. „ ResultSet rs = stmt.executeQuery(SQLString); „ type getType(int | String) „ đối số là thứ tự cột – bắt đầu từ 1- hoặc tên cột ResultSetMetaData rsmd = rs.getMetaData(); „ kiểu của type có thể là int, double, String, Date,.. tùy ý int numberOfColumns = rsmd.getColumnCount(); „ String isbn = rs.getString(1); // Column 1 „ getColumnName(int column) „ float price = rs.getDouble(“Price”); „ DatabaseMetadata là các lớp cung cấp thông tin về bản thân CSDL. „ Lưu ý „ số table „ ResultSet gắn liền với Connection đến CSDL „ cấu trúc các table.. „ Forward only theo mặc định „ Các phiên bản thực thi JDBC driver của các hãng „ Chuyển đổi kiểu tự động không giống nhau Bài giảng dành cho sinh viên Cao đẳng Công nghệ 21 Bài giảng dành cho sinh viên Cao đẳng Công nghệ 22 Quản lý Transaction JDBC 2.0 Enhancements „ Transaction: đơn vị tác vụ „ Two parts „ Theo mặc định, JDBC thực thi trọn vẹn(commit) các „ Core Java feature enhancements. In java.sql package câu lệnh SQL một khi nó được chuyển đến database; „ Extended features. In javax.sql package. Extra download gọi là autocommit. „ Enhancements „ Một số ứng dụng mang đặc điểm transaction- yêu cầu „ Scrollable Result Sets(in core API) các tác vụ thi hành hoặc cả gói hoặc nothing. „ Tắt chế độ autocommit để thực hiện quản lý transaction theo „ Batch Updates (in core API) đặc điểm của ứng dụng „ Advanced Data Types (in core API) „ Lớp Connection cung cấp hàm setAutoCommit( ) để bật tắt chế độ auto-commit „ JNDI for connecting to a database (in extension API) „ Câu lệnh sql đầu tiên đồng thời bắt đầu 1 transaction, kết thúc „ Connection pooling (in extension API) bằng commit() hoặc rollback() „ Rowsets (an additional Result type) (in extension API) „ con.setAutoCommit(false); s = con.createStatement(); s.executeUpdate(SQLString) „ Distributed transaction support (in extension API) con.commit( ); or rollback(); Bài giảng dành cho sinh viên Cao đẳng Công nghệ 23 Bài giảng dành cho sinh viên Cao đẳng Công nghệ 24 6
  7. Scrollable Result Sets Batch Updates „ ResultSet: three types of result sets „ The new batch update facility provides the ability to „ methods for moving the cursor to a particular row or to a relative send multiple updates to the database to be executed position (either forward or backward) „ previous(), beforeFirst( ), first( ), last( ), absolute( ), and relative( ). as a batch rather than sending each update separately „ methods for ascertaining the current position of the cursor „ Statement, PreparedStatement, and CallableStatement have „ constants indicating the scrollability of a result set methods for adding update statements to a batch, clearing all „ Connection update statements, and executing a batch . „ new versions of the methods for creating Statement, „ Statement s = connection.createStatement(); PreparedStatement, and CallableStatement objects that make the s.addBatch(“INSERT …. “); result sets that produce scrollable „ con.createStatement( s.addBatch(“INSERT …. “); ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY); s.executeBatch(); „ DatabaseMetaData „ can queue up SQL and execute in one call, improving efficiency „ method indicating whether the DBMS and driver support scrollable result sets „ BatchUpdateException: „ thrown exception when an error occurs in a batch update Bài giảng dành cho sinh viên Cao đẳng Công nghệ 25 Bài giảng dành cho sinh viên Cao đẳng Công nghệ 26 Bài tập – thực hành „ Download và sử dụng 1 JDBC Driver từ internet „ Phát triển lớp Account liên kết với table Account trong cơ sở dữ liệu AllInOne.sql „ Chú ý quản lý transaction trong các tác vụ nhiều bước của 1 Account „ Kết hợp xử lý lỗi sử dụng Exception Bài giảng dành cho sinh viên Cao đẳng Công nghệ 27 7
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
3=>0