JDBC的组成
JDBC API 面向开发人员的API 与数据库进行通信,操纵数据库中的数据
JDBC Driver API 面向底层驱动开发商的API 用来实现数据库接口应用编程接口与特定驱动器分离的特性,使开发人员统一编程接口来真的不同的数据库进行编程
JDBC API 是一系列的编程接口,用来进行数据库的连接访问数据等:
DriverManager 驱动程序管理类,用来装载驱动程序并为创建数据库连接提供支持
Connection(连接,关联)接口 用来连接某一指定的数据库
Statement(声明) 接口 该接口提供了执行SQL语句获取查询结果的方法 ,有两个子接口:
PreparedStatement(预编译语句):用于执行预编译的SQL语句
ResultSet(结果集):该接口提供了对结果集处理的方法;
java.sql.Date: java.util.Date的一个子集,用于表示与SQL DATE相同的日期类型,该类型不包括时间
java.sql.Timestamp:标准java.util.Date类的扩展,并增加了一个能表示纳秒的时间域
java.sql.CallableStatement:用于执行SQL存储过程
JDBC Driver API 有四种类型:
JDBC-ODBC bridge(桥):通过JDBC的调用通过其他编程接口来实现,odbc通道JDBC调用转化为对odbc调用,这种调用的驱动需要安装本地代码库(依赖本地程序,便携性差)
部分java技术的本地API驱动程序:部分实现基于java语言,其他部分委托给本地的数据库的客户端代码实现,跟上面一样依赖本地
全部基于java技术的本地API驱动程序I程序
全部基于java技术的本地协议驱动程序
JDBC编程流程:
1/加载驱动
2/打开数据库连接
3/创建一个会话对象执行增删改查
4/处理查询的结果
5/关闭会话,关闭连接等 清理工作
import
java
.
sql
.*;
public
class
TestJDBC
{
public
static
void
main
(
String
[]
args
)
{
ResultSet
rs
=
null
;
Statement
stmt
=
null
;
Connection
conn
=
null
;
//跟数据库连接先找到数据库管家DriverManager(连接哪种数据库)
//new出来mysql驱动类-class.forname
try
{
Class
.
forName
(
"com.mysql.jdbc.Driver"
)
;
//此时会自动注册DriverManager,可以拿到跟数据库连接
conn
=
DriverManager
.
getConnection
(
"jdbc:mysql://localhost:3306/tab_demo?useSSL=false"
,
"root"
,
"123456"
)
;
//现在已经连接到数据库上了,现在执行sql语句
//创建一个语句对象Statement陈述语句的意思
stmt
=
conn
.
createStatement
()
;
rs
=
stmt
.
executeQuery
(
"select * from inf"
)
;
while
(
rs
.
next
()){
int
id
=
rs
.
getInt
(
"id"
)
;
String
name
=
rs
.
getString
(
"name"
)
;
int
age
=
rs
.
getInt
(
"age"
)
;
System
.
out
.
println
(
"id"
+
id
+
"name"
+
name
+
"age"
+
age
)
;
}
}
catch
(
ClassNotFoundException
e
)
{
//驱动找不到报异常
e
.
printStackTrace
()
;
}
catch
(
SQLException
e
)
{
//后面的SQL执行异常,通常记录在log文件里,用log for J开源框架记录在文件里
e
.
printStackTrace
()
;
}
finally
{
//关闭资源
try
{
if
(
rs
!=
null
){
rs
.
close
()
;
rs
=
null
;
}
if
(
stmt
!=
null
){
stmt
.
close
()
;
stmt
=
null
;
}
if
(
conn
!=
null
){
conn
.
close
()
;
conn
=
null
;
}
}
catch
(
SQLException
e
)
{
e
.
printStackTrace
()
;
}
}
}}