您的位置:首页 > 编程语言 > Java开发

【JAVA】JDBC(Java数据库链接技术)

2016-08-12 11:43 281 查看
JDBC是什么?

JDBC的全称是java数据库链接(Java DataBase Connectivity)技术的简称,由一组Java语言编写的类和接口组成,可以为多种关系数据库提供统一访问。

JDBC的工作原理



1、JDBC API

JDBC API由Sun公司提供,提供了Java应用程序与各种不同数据库交互的标准接口,如Connection(连接)接口、Statement接口、ResultSet(结果集)接口、PrepareStatement接口等。开发者使用这些JDBC接口进行各类数据库操作。

2、JDBC Driver Manager由Sum公司提供,它负责管理各种不同的JDBC驱动,位于JDK的Java.sql包中。

3、JDBC驱动由各个数据库厂商或第三方中间件厂商提供,负责连接各种不同的数据库。如上图。

JDBC API介绍

JDBC API主要做3件事:与数据库建立连接、发送SQL语句、处理结果。

1、DriverManager类:依据数据库的不同,管理相应的JDBC驱动。

2、Connection接口:负责连接数据库并担任传送数据任务。

3、Statement接口:由Connection产生,负责执行SQL语句。

4、ResultSet接口:负责保存和处理Statement执行后所产生的查询结果。

5、PreparedStatement接口:Statement的子接口,也由Connection产生,同样负责执行SQL语句。与Statement相比,具有高安全性、高性能、高可读行和高可维护性的优点。

JDBC访问数据库的步骤

//示例讲解:
//1、加载JDBC驱动
Connection conn = null;
Statement sta = null;
PerparedStatement ps = null;
ResultSrt rs = null;
try{

//1、加载JDBC驱动
Class.forName("JDBC驱动类的名称");
//示例:Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");//SQL Server数据库驱动

//2、与数据库建立连接
conn = DreverManager.getConnection("数据连接字符串,数据库用户名,密码");
示例:conn=DriverManager.getConnection("jdbc:sqlserver://localhost:1433;databaseName=epet","sa","sa123456");
//3、发送SQL语句,并得到返回结果

//采用Statement接口
sta =  conn.createStatement();  //创建执行对象,不需要传递参数
rs = sta .executerQuery("SQL语句");

//采用PreparedStatement接口
ps = conn.createStatement("SQL语句");  //创建执行对象,以SQL语句作为参数
rs = ps.executerQuery();

//两者区别:
/*
提高了SQL语句执行的性能。
创建Statement对象时不试用SQL语句做参数,不会解析和编译SQL语句,每次调用方法执行SQL语句时都要进行SQL语句解析和编译操作,即操作相同仅仅是数据不同。
创建PreparedStatement对象时使用SQL语句作为参数,会解析和编译该SQL语句。也可以使用带占位符的SQL语句做参数,在通过getXxx()方法给占位符赋值后执行SQL语句时无须再解析SQL语句,直接执行即可。多次执行相同操作可以大大提高性能。
提高了安全性:
PreparedStatement使用预编译语句,传入的任何数据都不会和已经编译的SQL语句进行拼接,避免了SQL注入攻击。
*/

//4、处理返回结果
while(rs.next()){
int i = rs.getInt("Id");  //根据字段获取值
String s = rsgetString(2); //根据字段的位置获取值
}

//以上是使用JDBC的四个基本步骤。

}catch(Exception e){
//此处不需要异常提示
}finally{

/*  关闭连接,要先按ResultSet结果集、后PreparedStatement、最后Connection的顺序关闭资源,因为ResultSet是通过Statement执行SQL命令得到的,而Statement是需要创建连接后才可以使用的,所以三者之间存在相互依存的关系。
如果用户不关闭ResultSet,当Statement关闭、重新执行或用于从多结果序列中获取下一个结果时,ResultSet将被自动关闭。
*/
if(rs!=null){
rs.Close();
}finally{
}

if(ps!=null){
ps.Close();
}finally{
}

if(conn!=null){
conn.Close();
}finally{
}
}


Connection接口:

在实际的应用当中,有两种较为常用的驱动方法。第一种是JDBC-ODBC桥连方式(暂不学习),另一种是纯Java驱动方式(本章学习内容)。

Java纯驱动方式优点:运行速度快、具备夸平台特点。缺点:只能由数据库厂商自己提供,这类JDBC驱动只对应某一种数据库。

ResultSet的常用方法:

boolean next() 将光标从当前位置向下移动一行

boolean pervious() 将光标从当前位置向上移动一行

int getRow() 得到光标当前所指行的行号

boolean absolute(int row) 将光标移动到row指定的行

完!

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: