JDBC学习手册

上传人:工**** 文档编号:458552698 上传时间:2023-06-11 格式:DOC 页数:20 大小:630KB
返回 下载 相关 举报
JDBC学习手册_第1页
第1页 / 共20页
JDBC学习手册_第2页
第2页 / 共20页
JDBC学习手册_第3页
第3页 / 共20页
JDBC学习手册_第4页
第4页 / 共20页
JDBC学习手册_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《JDBC学习手册》由会员分享,可在线阅读,更多相关《JDBC学习手册(20页珍藏版)》请在金锄头文库上搜索。

1、JDBCJava DataBase Connectivty)整理人:徐仕锋( Eric ) 版本号: v2009-1-20JDBC概述1概述JDBC从物理结构上说就是 Java语言访问数据库的一套接口集合。从本质上来说就是调用者 (程序员)和实现者(数据库厂商)之间的协议。JDBC的实现由数据库厂商以驱动程序的形式提供。JDBC API使得开发人员可以使用纯 Java的方式来连接数据库,并进行操作。 ODBC :基于C语言的数据库访问接口。JDBC也就是Java版的ODBC。JDBC的特性:高度的一致性、简单性(常用的接口只有4、5个)。2 JDBC的发展#没有JDBC之前java程序是这样连

2、接各种数据库的。缺点:1、要求程序员必须熟悉编写 java程序连接各种数据库的驱动。2、移植性很不好,更改数据库必须重新编写连接数据库的驱动程序。Oracle驱动Oracle数据库SQL Server驱戲SQL Server数据库用了 JDBC以后java连接各种数据库方便多了!3 JDBC的API介绍在JDBC中包括了两个包:java.sql和javax.sql。 java.sql基本功能。这个包中的类和接口主要针对基本的数据库编程服务,如生成连接、执行语句以及准备语句和运行批处理查询等。同时也有一些高级的处理, 比如批处理更新、事务隔离和可滚动结果集等。 javax.sql 扩展功能。它主

3、要为数据库方面的高级操作提供了接口和类。如为连接管理、分布式事务和旧有的连接提供了更好的抽象,它引入了容器管理的连接池、分布式事务和行集(RowSet)等。主要对象和接口:注:除了标出的 Class其它均为接口。API说明java.sql.Connection与特定数据库的连接(会话)。能够通过getMetaData方法获 得数据库提供的信息、所支持的SQL语法、存储过程和此连接的功能等信息。代表了数据库。java.sql.Driver每个驱动程序类必需实现的接口,冋时,每个数据库驱动程序都应该提供一个实现 Driver接口的类。java.sql.DriverManager (Class)管理

4、一组JDBC驱动程序的基本服务。作为初始化的一部分, 此接口会尝试加载在jdbc.drivers系统属性中引用的驱动程序。只是一个辅助类,是工具。java.sql.Statement用于执行静态SQL语句并返回其生成结果的对象。java.sql.PreparedStatement继承Statement接口,表示预编译的 SQL语句的对象,SQL语 句被预编译并且存储在PreparedStatement对象中。然后可以使用此对象咼效地多次执行该语句。java.sql.CallableStatement用来访问数据库中的存储过程。它提供了一些方法来指定语句所使用的输入/输出参数。java.sql.

5、ResultSet指的是查询返回的数据库结果集。java.sql.ResultSetMetaData可用于获取关于ResultSet对象中列的类型和属性信息的对象。4驱动程序工作分类驱动程序按照工作方式分为四类:1、JDBC-ODBC bridge + ODBC 驱动JDBC-ODBC bridge桥驱动将JDBC调用翻译成 ODBC调用,再由ODBC驱动翻译 成访问数据库命令。优点:可以利用现存的 ODBC数据源来访问数据库。缺点:从效率和安全性的角度来说的比较差。不适合用于实际项目。2、基于本地API的部分Java驱动我们应用程序通过本地协议跟数据库打交道。然后将数据库执行的结果通过驱动程

6、序中的Java部分返回给客户端程序。优点:效率较高。 缺点:安全性较差。3、纯Java的网络驱动(中间协议)(本地协议)* DBapp JDBC 纯 Java 中间服务器 一缺点:两段通信,效率比较差优点:安全信较好4、纯Java本地协议:通过本地协议用纯Java直接访问数据库。特点:效率高,安全性好。JDBC编程步骤#1 注册一个Driver注册驱动程序有三种方式:方式一:Class.forName( oracle.jdbc.driver.O racleDriver ” );JAVA规范中明确规定:所有的驱动程序必须在静态初始化代码块中将驱动注册到驱动程序 管理器中。方式一:Driver d

7、rv = new oracle.jdbc.driver.OracleDriver();DriverMa nager.registerDriver(drv);方式三:通过设置系统属性jdbc.drivers,编译时在虚拟机中加载驱动.javac xxx.java ( 要确保驱动包在 classpath里)java -D jdbc.drivers=驱动全名类名使用系统属性名,加载驱动-D表示为系统属性赋值附:mysql 的 Driver 的全名 com.mysql.jdbc.DriverSQLServer 的 Driver 的全名 com.microsoft.jdbc.sqlserver.SQLS

8、erverDriverJDBC中驱动加载的时序图以上是JDBC中驱动加载的时序图。时序图主要有以下7个动作:1. 客户调用 Class.forName(“ XXXDriver加载驱动。2. 此时此驱动类首先在其静态语句块中初始化此驱动的实例。3. 再向驱动管理器注册此驱动。4. 客户向驱动管理器 DriverManager调用getConnection方法,5. DriverManager调用注册到它上面的能够理解此URL的驱动建立一个连接,6. 在该驱动中建立一个连接,一般会创建一个对应于数据库提供商的XXXCo nn ection连接对象,7. 驱动向客户返回此连接对象,不过在客户调用的g

9、etConnection方法中返回的为一个java.sql.Connection接口,而具体的驱动返回一个实现java.sql.Connection接口的具体类。2建立连接jdbc: oracle:thin:192.168020: 1521 :tarenaUser ”,”IP地址及端口号和L数据库实例名用户名,密码conn=DriverMa nager.getC onnection(Connection连接是通过 DriverManager的静态方法 getConnection(.)来得到的,这个方法的实质是把参数传到实际的Driver中的connect。方法中来获得数据库连接的。Oracle

10、 URL 的格式:jdbc:oracle:thin:(协议)XXX.XXX.X.XXX:XXXX (IP 地址及端口号):XXXXXXX(所使用的库名)MySql URL 的写法例:jdbc:mysql:/192.168.8.21:3306/test3获得一个Statement对象Stateme nt stmt = conn .createStateme nt();4 通过Statement执行Sql语句stmt.executeQuery(Stri ng sql);返回一个查询结果集。stmt.executeUpdate(String sql); /返回值为int型,表示影响记录的条数。将sq

11、l语句通过连接发送到数据库中执行,以实现对数据库的操作。5处理结果集使用 Connection 对象获得一个 Statement,Statement 中的 executeQuery(String sql)方法可 以使用select语句查询,并且返回一个结果集ResultSet通过遍历这个结果集,可以获得select语句的查寻结果,ResultSet的next()方法会操作一个游标从第一条记录的前面开始读取,直到最后一条记录。executeUpdate(String sql)方法用于执行 DDL和DML语句,比如可以 update, delete 操作。只有执行select语句才有结果集返回。例

12、:Statement str=con.createStatement(); 创建 Statement+”),String sql= insert into test(id,name) values(1,+ test +str. executeUpdate(sql);/执行 Sql 语句String sql= ” select * from test ” ;ResultSet rs=str. executeQuery(String sql);/ 执行 Sql 语句,执行 select语句后有结果集next()如果有下一条记录返回true,否则为false;遍历处理结果集信息while(rs.ne

13、xt()System.out.println(rs.getlnt( System.out.println(rs.getString( 6关闭数据库连接(释放资源)rs.close();stmt.close();con.close();ResultSet Statement Connection 是依次依赖的。注意:要按先ResultSet结果集,后Stateme nt,最后Conn ection的顺序关闭资源, 因为Statement和ResultSet是需要连接时才可以使用的,所以在使用结束之后有可能其它的Statement还需要连接,所以不能现关闭 Connection。图形演绎编写JDB

14、C程序的一般过程通过Driver#三、JDBC中几个重要接口#1 Statement SQL 语句执行接口Statement 接口代表了一个数据库的状态,在向数据库发送相应的 SQL 语句 时,都需要创建 Statement 接口或者 PreparedStatement 接口。在具体应用中, Statement主要用于操作不带参数 (可以直接运行) 的SQL语句,比如删除语句、 添加或更新。扩展:如何进行模糊查询? 关键点:如何根据条件拼接 SQL 语句2 PreparedStatement 预编译的 Statement第一步:通过连接获得 PreparedStatement对象,用带占位符

15、的sql语句构造。PreparedStatement pstm = con.preparedStatement(“select * from test where id=? ” ); 第二步: 设置参数pstm.setString(1,“ganbin”);第三步: 执行 sql 语句Rs = pstm.excuteQuery();statement发送完整的Sql语句到数据库不是直接执行而是由数据库先编译,再运行。而PreparedStatement是先发送带参数的Sql语句,再发送一组参数值。如果是同构的sql语句,PreparedStatement的效率要比statement高。而对于异构的 sql则两者效率差不多。 同构: 两个 Sql 语句可编译部分是相同的,只有参数值不同。异构: 整个 sql

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号