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
38 trang |
Chia sẻ: phuongt97 | Lượt xem: 348 | Lượt tải: 0
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:
- bai_giang_java_data_base_connectivity_vu_dinh_hong.pdf