前往顾页
以后地位: 主页 > 收集编程 > Jsp实例教程 >

JDBC编程学习条记

时候:2015-05-11 12:07来源:知行网www.zhixing123.cn 编辑:麦田守望者

1:JDBC概述
JDBC 是一种用于履行 SQL 语句的 Java API,JDBC 为东西/数据库开辟职员供应了一个标准的 API,使他们可以或许用纯Java API 来编写数据库利用法度。简朴地说,JDBC 可做三件事:(1)与数据库建立连接,(2)发送 SQL 语句,(3)措置成果。

2: JDBC驱动法度的范例

(1)JDBC-ODBC桥加ODBC驱动法度
JavaSoft桥产品操纵ODBC驱动法度供应JDBC拜候。重视,必须将ODBC二进制代码(很多环境下还包含数据库客户机代码)加载到利用该驱动法度的每个客户机上。是以,这类范例的驱动法度最适合于企业网(这类收集上客户机的装置不是首要问题),或是用Java编写的三层布局的利用法度办事器代码。

(2)本地API
这类范例的驱动法度把客户机API上的JDBC调用转换为Oracle、Sybase、Informix、DB2或别的DBMS的调用。重视,象桥驱动法度一样,这类范例的驱动法度请求将某些二进制代码加载到每台客户机上。

(3)JDBC收集纯Java驱动法度
这类驱动法度将JDBC转换为与DBMS无关的收集和谈,以后这类和谈又被某个办事器转换为一种DBMS和谈。这类收集办事器中间件可以或许将它的纯Java客户机连接到多种不合的数据库上。所用的详细和谈取决于供应者。凡是,这是最为矫捷的JDBC驱动法度。有可能所有这类处理计划的供应者都供应适合于Intranet用的产品。为了使这些产品也支撑Internet拜候,它们必须措置Web所提出的宁静性、经由过程防火墙的拜候等方面的分外请求。几家供应者正将JDBC驱动法度加到他们现有的数据库中间件产品中。

(4)本地和谈纯Java驱动法度
这类范例的驱动法度将JDBC调用直接转换为DBMS所利用的收集和谈。这将许可从客户机机器上直接调用DBMS办事器,是Intranet拜候的一个很合用的处理体例。因为很多如许的和谈都是公用的,是以数据库供应者本身将是首要来源,有几家供应者已在着手做这件事了。

据专家估计第(3)、(4)类驱动法度将成为从JDBC拜候数据库的首体例。第(1)、(2)类驱动法度在直接的纯Java驱动法度还没有上市前会作为过渡计划来利用。对第(1)、(2)类驱动法度可能会有一些变种,这些变种请求有连接器,凡是是这些是更加不成取的处理计划。第(3)、(4)类驱动法度供应了Java的所有长处,包含主动装置(比方,经由过程利用JDBC驱动法度的applet来下载该驱动法度)。

3:JDBC数据库拜候步调
简朴示例法度以下:
package employeetree.db.main;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

public class DbDriver {

//连接字符串
private static final String strDriver = “oracle.jdbc.driver.OracleDriver”;
private static final String strPassword = “duckbill61_a”;
private static final String strUrl = “jdbc:oracle:thin:@172.20.92.2:1521:ora9i”;
private static final String strUsername = “duckbill61_a”;

public static void main(String[] args){
Connection conn = null;
try{
Class.forName(strDriver);
conn = DriverManager.getConnection(strUrl,strUsername,strPassword);
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(“select * from employee”);
while(rs.next()){
System.out.println(rs.getInt(1));
}
}catch(Exception e){
e.printStackTrace();
}finally{
try{
conn.close();
}catch(Exception e){
e.printStackTrace();
}
}
}
}

(1)注册驱动法度
(2)建立连接
(3)发送SQL语句
(5)措置前往集
(6)善后措置

4:JDBC常常利用工具
DriverManager
DriverManager 类是 JDBC 的办理层,感化于用户和驱动法度之间。它跟踪可用的驱动法度,并在数据库和呼应驱动法度之间建立连接。别的,DriverManager类也措置诸如驱动法度登录时候限定及登录和跟踪动静的显现等事件。
对简朴的利用法度,一般法度员需求在此类中直接利用的独一体例是DriverManager.getConnection。正如称呼所示,该体例将建立与数据库的连接。JDBC许可用户调用DriverManager的体例getDriver、getDrivers和registerDriver及Driver的体例connect。但多数环境下,让DriverManager类办理建立连接的细节为下策。

Connection
Connection 工具代表与数据库的连接。连接过程包含所履行的 SQL 语句和在该连接上所前往的成果。一个利用法度可与单个数据库有一个或多个连接,或可与许多数据库有连接。2.1.1 翻开连接与数据库建立连接的标准体例是调用DriverManager.getConnection体例。该体例接管含有某个 URL 的字符串。DriverManager 类(即所谓的 JDBC办理层)将测验测验找到可与阿谁 URL 所代表的数据库进行连接的驱动法度。DriverManager 类存有已注册的 Driver 类的清单。当调用体例 getConnection 时,它将查抄清单中的每个驱动法度,直到找到可与URL 中指定的数据库进行连接的驱动法度为止。Driver 的体例connect 利用这个 URL来建立实际的连接。

Statement
Statement工具用于将SQL语句发送到数据库中。实际上有三种Statement工具,它们都作为在给定连接上履行SQL语句的包装器:Statement、PreparedStatement(它从Statement继承而来)和CallableStatement(它从PreparedStatement继承而来)。它们都公用于发送特定范例的SQL语句:Statement工具用于履行不带参数的简朴SQL语句;PreparedStatement工具用于履行带或不带IN参数的预编译SQL语句;CallableStatement工具用于履行对数据库已存储过程的调用。

Statement接口供应了履行语句和获得成果的根基体例;PreparedStatement接口增加了措置IN参数的体例;而CallableStatement增加了措置OUT参数的体例。

建立Statement工具
建立了到特定命据库的连接以后,便可用该连接发送SQL语句。Statement工具用Connection的体例createStatement建立,以以下代码段中所示:

Connection con = DriverManager.getConnection(url,”sunny”,””);
Statement stmt = con.createStatement();

为了履行Statement工具,被发送到数据库的SQL语句将被作为参数供应给Statement的体例:
ResultSet rs = stmt.executeQuery(”SELECT a,b,c FROM Table2″);

利用Statement工具履行语句
Statement接口供应了三种履行SQL语句的体例:executeQuery、executeUpdate和execute。利用哪个别例由SQL语句所产生的内容决定。
体例executeQuery用于产生单个成果集的语句,比方SELECT语句。体例executeUpdate用于履行INSERT、UPDATE或DELETE语句和SQL DDL(数据定义说话)语句,比方CREATE TABLE和DROP TABLE。INSERT、UPDATE或DELETE语句的结果是点窜表中零行或多行中的一列或多列。executeUpdate的前往值是一个整数,唆使受影响的行数(即更新计数)。对CREATE TABLE或DROP TABLE等不操纵行的语句,executeUpdate的前往值总为零。
履行语句的所有体例都将封闭所调用的Statement工具的以后翻开成果集(如果存在)。这意味着在从头履行Statement工具之前,需求完成对以后ResultSet工具的措置。应重视,继承了Statement接口中所有体例的PreparedStatement接口都有本身的executeQuery、executeUpdate和execute体例。Statement工具本身不包含SQL语句,因此必须给Statement.execute体例供应SQL语句作为参数。PreparedStatement工具其实不需求SQL语句作为参数供应给这些体例,因为它们已包含预编译SQL语句。

CallableStatement工具继承这些体例的PreparedStatement情势。对这些体例的PreparedStatement或CallableStatement版本,利用查询参数将抛出SQLException。

语句完成
当连接处于主动提交形式时,此中所履行的语句在完成时将主动提交或复原。语句在已履行且所有成果前往时,即以为已完成。对前往一个成果集的executeQuery体例,在检索完ResultSet工具的所有行时该语句完成。对体例executeUpdate,当它履行时语句即完成。但在多数调用体例execute的环境中,在检索所有成果集或它天生的更新计数以后语句才完成。
有些DBMS将已存储过程中的每条语句视为自力的语句;而别的一些则将全部过程视为一个复合语句。在启用主动提交时,这类不同就变得非常首要,因为它影响甚么时候调用commit体例。在前一种环境中,每条语句伶仃提交;在后一种环境中,所有语句同时提交。

封闭Statement工具
Statement工具将由Java渣滓汇集法度主动封闭。而作为一种好的编程气势,应在不需求Statement工具时显式地封闭它们。这将当即开释DBMS资本,有助于避免潜伏的内存问题。

顶一下
(1)
100%
踩一下
(0)
0%
------分开线----------------------------
标签(Tag):学习条记 JDBC JDBC编程
------分开线----------------------------
颁发评论
请自发遵循互联网相关的政策法规,严禁公布色情、暴力、革命的谈吐。
评价:
神色:
考证码:点击我更换图片
猜你感兴趣