日期:2014-05-16  浏览次数:20417 次

JDBC方式访问数据库

1、? JDBC是什么
JDBC是Java数据库连接(Java DataBase Connectivity)技术的简称。


2、? JDBC程序的工作原理

2.1、JDBC API

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


2.1.1、JDBC API的作用:与数据库建立连接、发送SQL语句、处理结果。
???????? DriverManager类:依据数据库的不同,管理JDBC驱动。
???????? Connection接口:负责连接数据库并担任传送数据的任务。
???????? Statement接口:由Connection产生,负责执行SQL语句。
???????? ResultSet接口:负责保存Statement执行后所产生的的查询结果。


2.2、JDBC Driver Manager

?????? JDBC Driver Manager由sun公司提供,它能够管理各种不同的JDBC驱动。


2.3、JDBC驱动
JDBC驱动由各个数据库厂商提供,负责连接各种不同的数据库。如:微软公司为我们提供了专门连接SQL Server的JDBC驱动,而Oracle公司则为我们提供了专门连接Oracle的JDBC驱动,这些JDBC驱动实现了JDBC API中定义的各种接口。


2.3.1、两种常用的驱动方式
(1)、JDBC-ODBC桥连。不能提供非常好的性能,只适用于个人的开发与测试,它通过ODBC与数据库进行连接。
???????? JDBC-ODBC桥连就是将对JDBC API的调用转换为对另一组数据库连接(即ODBC)API的调用。 JDK中已经包括了JDBC-ODBC桥连的驱动接口,所以进行JDBC-ODBC桥连时,不需要额外下载JDBC驱动程序,只需要配置ODBC数据源即可。


???????? //驱动类的名称
???????? Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”);

???????? //数据库连接字符串.。xinxin数据源名称
???????? Connection conn = DriverManager.getConnection(“jdbc:odbc:xinxin”,”sa”,”sa”);

?

(2)、纯Java驱动方式。直接同数据库进行连接,在生产型开发中,推荐使用纯Java驱动方式。
纯 Java驱动方式由JDBC驱动直接访问数据库,驱动程序完全由Java语言编写,运行速度快,而且具备了跨平台的特点。访问不同的数据库需要下载专用的JDBC驱动。


?????? //SQL Server 2005的驱动连接
?????? //数据库驱动
?????? com.microsoft.sqlserver.jdbc.SQLServerDriver

?????? // URL

?????? jdbc:sqlserver://localhost:1433;databasename=company

??????

?????? // SQL Server 2000的驱动连接
?????? //数据库驱动
?????? com.microsoft.jdbc.sqlserver.SQLServerDriver

?????? // URL

?????? jdbc:microsoft:sqlserver://localhost:1433;databasename=company

?

两种常用的驱动方式示意图:



?


2.4、JDBC程序的代码模板
?????? 开发一个JDBC应用程序,基本需要以下步骤:
(1)、把JDBC驱动类装载入Java虚拟机中,为此,可使用Class.forName()方法,此方法将给定的类加载到Java虚拟机中。如果系统中不存在给定的类,则会引发异常,异常类型为ClassNotFoundException。
???????? Class.forName(“JDBC驱动类的名称”);

?

(2)、加载驱动,并与数据库建立连接。DriverManager类跟踪已注册的驱动程序,当调用getConnection()方法时,它会搜索整个驱动程序列表,直到找到一个能够连接至数据连接字符串中指定的数据库的驱动程序。加载此驱动程序之后,将使用DriverManager类的getConnection()方法建立与数据库的连接。此方法接收三个参数,分别表示URL、用户名和密码。用户名和密码是可选的。
???????? Connection conn = DriverManager.getConnection(数据库连接字符串,数据库用户名,密码);

?

(3)、发送SQL语句,并得到结果集。一旦连接建立,就使用该连接创建Statement接口的实例,并将SQL语句传递给它所连接的数据库,并返回类型为ResultSet的对象,它包含执行SQL查询的结果。
???????? Statement stmt = conn.createStatement();

???????? ResultSet rs = stmt.executeQuery(select a,b,c from table);

?

(4)、处理结果。使用ResultSet对象的next()方法将光标(cursor)指向下一行。最初光标位于第一行之前,因此第一次调用next()方法将光标置于第一行上。如果到达结果集的末尾,则ResultSet的next()方法会返回false。方法getXXX提供了获取当前行中某列值的途径,列名或列号可用于标识要从中获取数据的列。例如:如果数据表中第一列的列名为a,存储类型为整型,则可以使用两种方法获取存储在该列中的值,如:int x = rs.getInt(“a”);或者:int x = rs.getInt(1);

处理结果的代码示例:
???????? while(rs.next()){

?????????? int x = rs.getInt(“a”);

?????????? String s = rs.getString(“b”);

?????????? float f = rs.getFloat(“c”);

}

?

JDBC程序的代码模板:

//把JDBC驱动类装载入Java虚拟机中
Class.forName(JDBC驱动类的名称);

//加载驱动,并与数据库建立连接,其中数据库连接字符串用来标识数据库
Connection conn = DriverManager.getConnection(数据库连接字符串,数据库用户名,密码);

//执行SQL语句,并得到结果集
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(“select a,b,c from table”);

//处理结果
while(rs.next()){
  int x = rs.getInt(“a”);
  String s = rs.getString(“b”);
  float f = rs.getFloat(“c”);
}

??

2.5、什么是JDBC URL

JDBC URL提供了一种标识数据库的方法,可以使相应的JDBC驱动程序能识别数据库并与之建立连接。
JDBC URL的标准语法由以下三个部分组成,各部分间用冒号分隔。
Jdbc:<子协议>:<子名称>

JDBC URL的三个部分可以分解如下:
其中jdbc-----代表协议。
<子协议>----驱动程序名或数据库连接机制的名称。
<子名称>----一种标识数据库的方法。


JDBC URL示例:
jdbc:odbc:news

jdbc:microsoft:sqlserver://localhost:1433;DatabaseN