JDBC 编程
数据库简介
数据库(DB,Data Base)
数据库管理系统(DBMS,Data Base Management Systenm)
关系型数据库(RDB)
关系型数据库管理系统(RDBMS)
SQL 语言(Structured Query Language)
• 使用关系模型的数据库语言,用于和各类数据库的交互,提供通用的数据管理和查询功能。
• 常用 SQL 指令:SELECT 、INSERT、DELETE、UPDATE、CREATE、DROP
ODBC(Open DataBase Connectivity 开放式数据库互连)
• 数据库系统应用程序接口规范。
• 支持应用程序以标准的 ODBC 函数和 sql 语句操作各种不同类型的数据库
操作各种不同类型的数据库。
JDBC
JDBC(Java DataBase Connectivity)
JDBC 功能:
• 支持基本 SQL 语句,在 Java 程序中实现数据库操作功能并简化操作过程
• 提供多样化的数据库连接方法
• 为各种不同的数据库提供统一的操作界面
JDBC API
• java.sql. DriverManager 类
• java.sql.Driver 接口
• java.sql.Connection 接口
• java.sql.Statement 接口
• java.sql.ResultSet 接口
JDBC 工作原理
JDBC 驱动程序
数据库驱动程序(DataBase Driver)
JDBC 驱动程序分类:
• 第一类:JDBC-OCBC 桥
• 第二类:Java 到本地 API
• 第三类:Java 到网络协议
• 第四类:Java 到数据库协议
数据库 URL
JDBC 技术中使用数据库 URL 来标识目标数据库
数据库 URL 格式:
Java 代码
1. jdbc:<子协议名>:<子名称>
• "jdbc"为协议名,确定不变;
• <子协议名>指定目标数据库的种类和具体连接方式;
• <子名称>指定具体的数据库/数据源连接信息(如数据库服务器的 IP 地址/通信端口号、ODBC
数据源名称、连接用户名/密码等)。
• 子名称的格式和内容随子协议的不同而改变。
举
例
Jav
JD
JD
B
1.
2.
3.
4.
Jav
例
:
a 代码
1. jdbc:o
2. jdbc:
m
3. jdbc:
m
4. jdbc:
m
BC 编
程
B
C编程基
加载驱动
程
建立到指
定
提交数据
库
取得查询
结
a 代码
1. import
2. import
3. import
4. import
5. import
6.
7. public
8. p
u
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
racle:thi
m
icrosoft:
m
icrosoft:
m
ysql://1
2
程
本步骤
程
序(向
系
定
数据库
的
库
查询;
结
果
java.sql
java.sql
java.sql
java.sql
java.sql
class J
D
u
blic stat
try{
Cl
a
St
r
Co
n
St
a
Res
whi
}
rs.
st
m
co
n
}catch
(
Sys
}catch
(
n:@222.21
sqlserve
r
sqlserve
r
2
7.0.0.1/
d
系
统注册所
需
的
连接;
.DriverM
a
.Connecti
.Stateme
n
.ResultS
e
.SQLExce
p
D
BCExampl
e
ic void
m
a
ss.forNa
m
r
ing url
=
n
nection
c
a
tement s
t
ultSet r
s
le(rs.ne
x
System.
o
System.
o
System.
o
close();
m
t.close()
n
n.close()
(
ClassNot
F
tem.out.
p
(
SQLExcep
t
2.32.14:1
r
://127.0.
r
://127.0.
d
b_rbh
需
的 JDBC
驱
a
nager;
on;
n
t;
e
t;
p
tion;
e
{
m
ain(Stri
n
m
e("oracl
e
=
"jdbc:o
r
c
onn = Dri
mt = con
n
= stmt.
e
x
t()){
o
ut.print
(
o
ut.print
(
o
ut.printl
;
;
F
oundExce
p
p
rintln("
找
ion e){
1
521:dbrb
h
0.1:1433
0.1:1433,
驱
动程序)
n
g args[])
e
.jdbc.dr
i
r
acle:thi
n
i
verManag
e
n
.createS
t
e
xecuteQu
e
(
"DeptNo:
(
"\tDeptN
a
l
n("\tLOC:
p
tion e){
找
不到指
定
h
database
n
;
{
i
ver.Orac
l
n
:@127.0.
0
e
r.getCon
n
t
atement()
e
ry("sele
c
" + rs.g
e
a
me: " +
r
" + rs.
g
定
的驱动程
序
n
ame=pubs
l
eDriver")
0
.1:1521:
d
n
ection(u
r
;
c
t * from
e
tInt(1));
r
s.getStr
i
g
etString
(
序
类!");
;
d
brbh";
r
l,"scott
"
dept");
i
ng(2));
(
3));
"
,"tiger")
;
26. e.printStackTrace();
27. }
28. }
29.}
ResultSet 常用 get...()方法 SQL-Java 类型对应关系
执行 DML 语句
Sql 代码
1. create table student(
2. sid char(10),
3. name char(20),
4. age number(3));
5.
6. insert into student values('J001','张三',18);
7. insert into student values('J002','李四',20);
8. insert into student values('J003','王五',19);
Java 代码
1. import java.sql.*;
2.
3. public class TestDML{
4. public static void main(String args[]){
5. try{
6. Class.forName("oracle.jdbc.driver.OracleDriver");
7. String url = "jdbc:oracle:thin:@127.0.0.1:1521:dbrbh";
8. Connection conn = DriverManager.getConnection(url,"scott","tiger");
9. Statement stmt = conn.createStatement();
10. stmt.executeUpdate("insert into student values('J001','张三
',18)");
11. stmt.executeUpdate("insert into student values('J002','李四
',20)");
12. stmt.executeUpdate("insert into student values('J003','王五
',19)");
13. ResultSet rs = stmt.executeQuery("select * from student");
14. while(rs.next()){
15. System.out.print("学号: " + rs.getString(1));
16. System.out.print("\t 姓名: " + rs.getString(2));
17. System.out.println("\t 年
龄: " + rs.getInt(3));
18. }
19. rs.close();
20. stmt.executeUpdate("update student set age=age+10");
21. stmt.executeUpdate("delete from student where sid='J002'");
22. System.out.println("--------------更新/删除数据后
---------------");
23. rs = stmt.executeQuery("select * from student");
24. while(rs.next()){
25. System.out.print("学号: " + rs.getString("sid"));
26. System.out.print("\t 姓名: " + rs.getString("name"));
27. System.out.println("\t 年
龄: " + rs.getInt("age"));
28. }
29. rs.close();
30. stmt.close();
31. conn.close();
32. }catch(Exception e){
33. e.printStackTrace();
34. }
35. }
36.}
执行 DDL 语句
Java 代码
1. import java.sql.*;
2.
3. public class TestDDL{
4. public static void main(String args[]){
5. Connection conn = null;
6. Statement stmt = null;
7. ResultSet rs = null;