Bài giảng Java Data Base Connectivity - Vũ Đình Hồng

ODBC

Phụ thuộc với HĐH, tồn tại dưới dạng file .dll

JDBC

SERVER

Độc lập với HĐH và được chỉ định bởi JRE.

JDBC là một API dùng để truy xuất CSDL gồm

các lớp và hàm quy định trong thư viện java.sql

pdf38 trang | Chia sẻ: phuongt97 | Lượt xem: 253 | Lượt tải: 0download
Bạn đang xem trước 20 trang nội dung tài liệu Bài giảng Java Data Base Connectivity - Vũ Đình Hồng, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
JDBC Java Data Base Connectivity GV: Vũ Đình Hồng Khoa: CNTT – TỨD ODBC CLIENT Application DBDRIVER 1 DRIVER 2 DRIVER 3 connection Request ODBC Driver Manager DB DB connection connection SERVER Phụ thuộc với HĐH, tồn tại dưới dạng file .dll JDBC SERVER Độc lập với HĐH và được chỉ định bởi JRE. JDBC là một API dùng để truy xuất CSDL gồm các lớp và hàm quy định trong thư viện java.sql JAVA APP DBDRIVERJDBC JRE C L I E N T JAVA APP DBDRIVER SERVER JDBC JRE C L I E N T JDBC API Application JDBC Driver A JDBC Driver Manager JDBC.ODBC BRIDGE ODBC JDBC Architecture JDBC Driver B DB DB DB JDBC JDBC hỗ trợ 4 loại driver 1. JDBC-ODBC Bridge Driver. 2. Native-API Partly Java Driver 3. Net-Protocol Fully Java Driver 4. Native-Protocol Fully Java Driver JDBC-ODBC Bridge Driver • JDBC-ODBC bridge cung cấp cách thức truy cập JDBC API qua một hay nhiều ODBC driver. • đòi hỏi trình điều khiển ODBC được cài đặt trên máy tính client JDBC-ODBC Bridge Driver JAVA APP DB JDBC-ODBC BRIDGE J D B C O D B C C L I E N T SERVER Native-API Partly Java Driver • Loại driver này chuyển các JDBC calls qua client API cho Oracle, SQLServer, Sybase, Informix, DB2, hoặc các loại DBMS. • Khi có sự chuyển đổi này trên máy client, một số mã nhị phân phải được thực thi trên từng client . Native-API Partly Java Driver ORA CLE SQL Server OCI DB Library J D B C JAVA App C L I E N T SERVER Net-Protocol Fully Java Driver • Chuyển đổi các JDBC API calls thành giao thức độc lập với hệ quản trị CSDL rồi sau đó chuyển thành giao thức của hệ quản trị CSDL đó thông qua một server. • Sự chuyển đổi này thực hiện bên phía server mà không đòi hỏi cài đặt trên máy client Net-Protocol Fully Java Driver JDBC Driver 1 Middle ware Appli cation ODBC OCI DB Library JAVA App JAVA App JDBC Driver 2 DB Ora cle SQL Ser CLIENT SERVERAPPLICATION SERVER Protocol 1 Proto col 2 • Chuyển các JDBC calls thành lời gọi giao thức của DBMS đặc thù một cách trực tiếp. • Cho phép thực hiện lời gọi trực tiếp từ client tới DBMS server. • Khi đó sự chuyển đổi này thực hiện bên phía server mà không đòi hỏi cài đặt bên phía client Native-Protocol Fully Java Driver Native-Protocol Fully Java Driver JDBC Driver JAVA App Data Base PROTOCOL user Sockets & Streams Loading DriverManager Cú pháp khai báo Class file Class.forName(“DriverManagerClass”); Example for Jdbc-Odbc bridge driver: Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”); Class.forName("oracle.jdbc.driver.OracleDriver"); Class.forName("jdbc:mysql://localhost/ejbdemo? user=user; password=pass”); Loading DriverManager Jdbc-Odbc Bridge : sun.jdbc.odbc.JdbcOdbcDriver Oracle : oracle.jdbc.driver.OracleDriver DB2 : COM.ibm.db2.jdbc.app.DB2Driver Pointbase : com.pointbase.jdbc.jdbcUniversalDriver Sybase : com.sybase.jdbc2.jdbc.SybDriver SQL-Server : weblogic.jdbc.mssqlserver4.Driver • User DSN • System DSN • File DSN Data Source Name Connecting Through DSN Connection con = DriverManager.getConnection(“jdbc:odbc:dsnname”); DriverManager.getConnection(“jdbc:odbc:dsnname”, “username”, “password”); DriverManager.getConnection("jdbc:oracle:oci“, “username”, “password”); DriverManager.getConnection("jdbc:oracle:thin:@ip address:port:hoststring”, “username”, “password”) Connection to DataBases Jdbc-Odbc Bridge:may or may not need username, password Jdbc:Odbc:Dsn1 Jdbc:Odbc:Dsn2 Oracle : needs username, password jdbc:oracle:thin:@localhost:1521:orcl jdbc:oracle:oci DB2 : jdbc:db2:mySource Pointbase : jdbc:pointbase://localhost:5008/Demo Sybase : jdbc:sybase:Tds:localhost:7009/Employee SQL-Server : needs username, password jdbc:weblogic:mssqlserver4:j2ee@localhost:1433 Ví dụ: Class.forName("sun.jdbc.odbc.JdbcOdbcDr iver"); Connection con = DriverManager.getConnection("Jdbc: Odbc:DsnName"); Connecting To Access Ví dụ: Class.forName("sun.jdbc.odbc.JdbcOdbcDr iver"); Connection con = DriverManager.getConnection("Jdbc: Odbc:OraDsn","scott","tiger"); Connecting To Oracle Class.forName("oracle.jdbc.driver.OracleD river"); Connection con = DriverManager.getConnection("jdbc: oracle: thin:@localhost:1521:orcl","scott","ti ger"); Connecting To Oracle Cung cấp thông tin về database DatabaseMetaData mdata=con.getMetaData(); mdata.getDatabaseProductName() mdata.getDatabaseProductVersion() mdata.getDriverName() mdata.supportsStoredProcedures() DatabaseMetaData Statements 1.Statement It is used to execute SQL statements 1.Prepared Statement Used to prepare statements with place holders(?) to set the values at run time 1.Callable Statement Used to execute functions or procedures available in data base Statement Statement smt = con.createStatement(); ResultSet rs = smt.executeQuery(“Select_Queries”); int n = smt.executeUpdate(“DML_Queries”); boolean b = smt.execute(“Other_Queries”); • Là một Object dùng để lưu trữ dữ liệu lấy ra qua statement và dưới dạng các dòng và cột. • Trước đây nó chỉ gồm 2 thuộc tính là Forward Only và Read Only. • Từ phiên bản API 1.2 trở đi nó đã nâng cấp. ResultSet • Chuyển từ một record sang record tiếp theo boolean b = rs.next() • Ta có thể lấy giá trị từ ResultSet thông qua chỉ mục của cột hay tên cột int n=rs.getInt(int/String); String s=rs.getString(int/String); . XXX x=rs.getXXX(int/String); ResultSet • Là thông tin về dữ liệu của ResultSet lấy về như tên cột, tên bảng... ResultSetMetaData rsmd = rs.getMetaData(); int count = rsmd.getColumnCount(); Strting fname = rsmd.getColumnName(int index); String alias = rsmd.getColumnLabel(int index); int dn = rsmd.getColumnType(int index); String dn = rsmd.getColumnTypeName(int index); ResultSetMetaData PreparedStatement PreparedStatement ps = con.prepareStatement(“Query with Place Holders”); Example: PreparedStatement ps = con.prepareStatement(“select * from emp where empno=?”); PreparedStatement ps = con.prepareStatement(“insert into emp(empno, ename, sal, deptno) values(?,?,?,?)”); PreparedStatement Gán giá trị cho một place holder ps.setInt(int, int); ps.setString(int, String); .. ps.setXXX(int, XXX); Thực thi PreparedStatement ResultSet rs=ps.executeQuery(); int n=ps.executeUpdate(); boolean b=ps.execute(); JDBC 2.0 JDBC 2.0 Nhanh hơn, có thể sử dụng lại và hỗ trợ bảo mật Các tính năng mới ở JDBC 2.0: -Hỗ trợ các kiểu dữ liệu phức tạp -Scrollable result sets -Batch updates JDBC 2.0 API cho phép con trỏ của ResultSet có thể truy xuất lên hoặc xuống Statement stat=null stat=con.createStatement(scrollability , updation) Examples: Statement st= con.createStatement(ResultSet.TYPE_SCROLL_SENSIT IVE, ResultSet.CONCUR_READ_ONLY); Srollable ResultSet • TYPE_FORWARD_ONLY Nonscrollable, forward only • TYPE_SCROLL_INSENSITIVE Scrollable (forward, backward và dòng cụ thể). • TYPE_SCROLL_SENSITIVE Scrollable (forward, backward và truy xuất đến dòng cụ thể). Nhạy cảm với các thay đổi xảy ra khi làm việc. Types of Result Sets Các phương thức truy xuất ResultSet res.first() res.last() res.next() res.afterLast() res.beforeFirst() res.absolute(4) res.relative(1) ResultSet Navigation Batch Update Một batch update là một tập hợp gồm nhiều các statement thực hiện update tới CSDL Trong nhiều trường hợp, gửi nhiều câu truy vấn đến CSDL trong một lần thực hiện mang lại hiệu quả cao hơn so với thực hiện trong nhiều lần This ability to send updates as a unit, referred to as the batch update facility Batch update có thể được thực hiện cho Statement , Prepared Statement và Callable Statement interface. Batch Update addBatch(): add câu lệnh SQL clearBatch(): xóa danh sách các câu lệnh executeBatch(): gửi danh sách các câu lệnh để thực hiện Statement stmt = con.createStatement(); stmt.addBatch("INSERT INTO COFFEES VALUES(‘chakradhar', 49, 9.99, 0, 0)"); stmt.addBatch("INSERT INTO COFFEES VALUES('Honey', 49, 9.99, 0, 0)"); int[] updateCounts = stmt.executeBatch(); Các kiểu dữ liệu mới Blob (binary large object) photos Clob (character large object) files Array object REF (object reference) UDT (user-defined data type) Advanced Data Types Q & A THANK YOU FOR LISTENING

Các file đính kèm theo tài liệu này:

  • pdfbai_giang_java_data_base_connectivity_vu_dinh_hong.pdf