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

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

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

Thông tin tài liệu

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

Ngày đăng: 23/03/2014, 00:20

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan