1.
JDBC
连接数据库
2.
•
创建一个以
JDBC
连接数据库的程序,包含
7
个步骤:
3.
1
、加载
JDBC
驱动程序:
4.
在连接数据库之前,
首先要加载想要连接的数据库的驱动到
JVM
(
Java
虚拟机)
,
5.
这通过
java.lang.Class
类的静态方法
forName(String className)
实现。
6.
例如:
7.
try
{
8.
//
加载
MySql
的驱动类
9.
Class.forName(
"com.mysql.jdbc.Driver"
)
10.
}
catch
(ClassNotFoundException e){
11.
System.out.println(
"
找不到驱动程序类
,加载驱动失败!
"
);
12.
e.printStackTrace()
13.
}
14.
成功加载后,会将
Driver
类的实例注册到
DriverManager
类中。
15.
2
、提供
JDBC
连接的
URL
16.
•
连接
URL
定义了连接数据库时的协议、子协议、数据源标识。
17.
•
书写形式:协议:子协议:数据源标识
18.
协议:在
JDBC
中总是以
jdbc
开始
19.
子协议:是桥连接的驱动程序或是数据库管理系统名称。
20.
数据源标识:标记找到数据库来源的地址与连接端口。
21.
例如:(
MySql
的连接
URL
)
22.
jdbc:mysql:
23.
//localhost:3306/test?useUnicode=true&characterEncoding=gbk
24.
useUnicode=
true
:表示使用
Unicode
字符集。如果
characterEncoding
设
置为
25.
gb2312
或
GBK
,本参数必须设置为
true
。
characterEncoding=gbk
:字符
编码方式。
26.
3
、创建数据库的连接
27.
•
要连接数据库,
需要向
java.sql.DriverManager
请求并获得
Connection
对
象,
28.
该对象就代表一个数据库的连接。
29.
•
使用
DriverManager
的
getConnectin(String url , String usernam
e ,
30.
String password )
方法传入指定的欲连接的数据库的路径、
数据库的用户名和
31.
密码来获得。
32.
例如:
33.
//
连接
MySql
数据库,用户名和密码都是
root
34.
String url =
"jdbc:mysql://localhost:3306/test"
35.
String username =
"root"
36.
String password =
"root"
37.
try
{
38.
Connection con =
39.
DriverManager.getConnection(url , username , password )
40.
}
catch
(SQLException se){
41.
System.out.println(
"
数据库连接失败!
"
);
42.
se.printStackTrace()
43.
}
44.
4
、创建一个
Statement
45.
•
要执行
SQL
语句,必须获得
java.sql.Statement
实例,
Statement
实例分
为以下
3
46.
种类型:
47.
1
、执行静态
SQL
语句。通常通过
Statement
实例实现。
48.
2
、执行动态
SQL
语句。通常通过
PreparedStatement
实例实现。
49.
3
、执行数据库存储过程。通常通过
CallableStatement
实例实现。
50.
具体的实现方式:
51.
Statement stmt = con.createStatement()
52.
PreparedStatement pstmt = con.prepareStatement(sql)
53.
CallableStatement cstmt =
54.
con.prepareCall(
"{CALL demoSp(? , ?)}"
)
55.
5
、执行
SQL
语句
56.
Statement
接口提供了三种执行
SQL
语句的方法:
executeQuery
、
execut
eUpdate
57.
和
execute
58.
1
、
ResultSet executeQuery(String sqlString)
:
执行查询数据库的
SQL
语
句
59.
,返回一个结果集(
ResultSet
)对象。
60.
2
、
int
executeUpdate(String sqlString)
:用于执行
INSERT
、
UPDATE
或
61.
DELETE
语句以及
SQL DDL
语句,如:
CREATE TABLE
和
DROP TABLE
等
62.
3
、
execute(sqlString):
用于执行返回多个结果集、多个更新计数或二者组合
的
63.
语句。
64.
具体实现的代码:
65.
ResultSet rs = stmt.executeQuery(
"SELECT * FROM ..."
)
66.
int
rows = stmt.executeUpdate(
"INSERT INTO ..."
)
67.
boolean
flag = stmt.execute(String sql)
68.
6
、处理结果
69.
两种情况:
70.
1
、执行更新返回的是本次操作影响到的记录数。
71.
2
、执行查询返回的结果是一个
ResultSet
对象。
72.
•
ResultSet
包含符合
SQL
语句中条件的所有行,并且它通过一套
get
方法提
供了对这些
73.
行中数据的访问。
74.
•
使用结果集(
ResultSet
)对象的访问方法获取数据:
75.
while
(rs.next()){
76.
String name = rs.getString(
"name"
)
77.
String pass = rs.getString(
1
)
//
此方法比较高效
78.
}
79.
(列是从左到右编号的,并且从列
1
开始)
80.
7
、关闭
JDBC
对象
81.
操作完成以后要把所有使用的
JDBC
对象全都关闭,以释放
JDBC
资源,关闭
顺序和声
82.
明顺序相反:
83.
1
、关闭记录集
84.
2
、关闭声明
85.
3
、关闭连接对象
86.
if
(rs !=
null
){
//
关闭记录集
87.
try
{
88.
rs.close()
89.
}
catch
(SQLException e){
90.
e.printStackTrace()
91.
}
92.
}
93.
if
(stmt !=
null
){
//
关闭声明
94.
try
{
95.
stmt.close()
96.
}
catch
(SQLException e){
97.
e.printStackTrace()
98.
}
99.
}
100.
if
(conn !=
null
){
//
关闭连接对象
101.
try
{
102.
conn.close()
103.
}
catch
(SQLException e){
104.
e.printStackTrace()
105.
}
106.
}