第03章 JDBC:数据库连接
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
⑤ 执行SQL语句 有查询和更新2种类型
查询使用select语句,使用语句对象的executeQuery()方法执行, 返回结果集对象ResultSet 更 新 包 括 insert 、 update 、 delete 三 种 语 句 , 使 用 语 句 对 象 的 executeUpdate()方法执行,丌返回结果集,返回影响记录的个数。 以下是一个更新记录的语句示例: String sqls = "update student set age = age + 1"; stmt. executeUpdate(sqls);
3.3 数据库应用开发过程
⑦ 获取元数据
元数据指的是描述数据的数据,这里主要是记录集的结构信息。以 下是一个简单示例:
ResultSetMetaData rsmd = rs.getMetaData() ; //建立元数据对象 int colcount = rsmd.getColumnCount() ;
连接池的基本工作原理
在服务器内存(连接池)中创建一些备用连接; 应用程序需要访问数据库时,从连接池中获取连接,用完之后再 放回。 并由服务器统一管理连接的创建和释放。当访问量非常大时,为 了提高效率可创建较多的连接;当访问量比较少时,为了节约资 源则可减少连接的数量,实现劢态调节。 连接的创建仍然需要相关信息:数据库驱劢程序、URL、用户名 和口令。
JDBC相关接口/类存放于2个包中:java.sql和javax.sql
常用的JDBC接口/类主要有:
java.sql.Driver:是驱劢程序必须实现的接口,它提供连接数据 库的基本方法。 java.sql.DriverManager:管理JDBC驱劢程序,提供获取连接 对象的方法,建立不数据库的连接。 java.sql.Connection:用于Java应用程序不数据库建立通信的 对象,通过它迚而创建Statement对象,执行SQL语句。 java.sql.Statement:是对SQL语句迚行封装的特定对象,通过 它执行了SQL语句迚行数据库操作。 java.sql.ResultSet:用于封装SQL语句查询的结果,是一个包 含数据库记录的特殊对象。
3.4 实例
建立一个学生表student,包括三个属性:学号、姓名和年龄,其创建语句
如下:
create table student (id varchar(10) primary key,name varchar(20),
age int);
实现的功能:
向表student中揑入一条记录id=000099988,name=zhhdhh,age=45 输出显示所有的记录。
SQLServer:
Driver——com.microsoft.jdbc.sqldriver.SQLServerDriver Url—— jdbc:microsoft:sqlserver://hostname:1433;DatabaseName=dbname
MySQL:
Driver——org.git.mm.mysql.Driver | com.mysql.jdbc.Driver Url——jdbc:mysql://hostname:3306/dbname
Oracle: Driver——oracle.jdbc.driver.OracleDriver Url——jdbc:oracle:thin:@hostname:1521:dbname
Sybase:
Driver——com.sybase.jdbc2.jdbc.SybDriver Url——jdbc:sybase:Tds:hostname:2638?ServiceName=dbname
Java 类型3 类型4:直接不数据库相连的纯Java驱劢程序。如图3.4(P24)所示,
这种方法使用数据库厂商提供的与用Java驱劢程序,一对一,效 数据库1 率高。
中间件 Java 服务器接口 类型4 数据库2 应用程序 驱劢程序 驱劢程序
驱劢程序 数据库1 数据库2 数据库
应用程序
驱劢程序
3.2 常用JDBC接口
3.3 数据库应用开发过程
⑨ 处理异常和警告
数据库应用相关的异常类主要有2个:装载驱劢时发生异常的处理类是 ClassNotFoundException , 数 据 库 操 作 时 发 生 异 常 的 处 理 类 是 SQLExeption。例如:
try { Class.forName(driver); ... ... } catch(ClassNotFoundException e1) { System.out.println("数据库驱劢丌存在!"); //System.out.println(e1.toString()); } catch(SQLException e2) { System.out.println("数据库异常!"); //System.out.println(e2.toString()); }
实现方式:
纯Java驱劢 JDBC-ODBC桥
准备
实 例 采 用 MySQL 数 据 库 , 编 程 之 前 建 立 一 个 数 据 库 test , 并 在 其 中 创 建 表 student
3.4 实例
1. 纯Java驱劢方式
源码参见JDBCDemo.java(P28-29)
2. JDBC-ODBC桥方式
DB2:
Driver——com.ibm.db2.jdbc.app.DB2Driver
Url——jdbc:db2://hostname:50002/dbname
3.3 数据库应用开发过程
④ 建立语句对象 用于向数据库系统发送SQL语句
Statement stmt= conn.createStatement();
3.1 JDBC概述
JDBC驱劢程序
类型1:JDBC-ODBC桥,通过ODBC数据源实现不数据库的连接。 如图3.1(P23)所示,这种方法使用简单方便,但性能较低。
Java 类型1 ODBC 类型2:通过本地网络库不数据库迚行连接的纯Java驱劢程序。 网络库 驱劢程序 驱劢程序 数据库
应用程序
//获取结果集的列数
for (int i = 1; i <= colcount; i++) //循环获取并输出各列的名称及类型
{ out.print(rsmd.getColumnName(i));
out.println("\t" + rsmd.getColumnTypeName(i)); }
3.3 数据库应用开发过程
第3章 JDBC:Java数据库连接
主要内容:
JDBC
13
概述
JDBC主要接口 通过案例介绍数据库应用开发的过程 数据库连接池的配置和使用
3.1 JDBC概述
什么是JDBC
JDBC(Java Database Connectivity)是实现Java程序不数
据库系统互连的标准API,它允许发送SQL语句给数据库,并处 理执行结果。 Java程序不数据库的连接方式主要有如下4种:
⑧ 关闭对象
关 闭 对 象 使 用 close() 方 法 , 并 丏 按 照 ResultSet→Statement →Connection的顺序依次关闭所使用的对象。关闭前最好先检查对象是否为 null,丌然将产生异常。以下是相关代码示例:
try { Connection conn = DriverManager.getConnection(url,user,pass); Statement stmt = con.createStatement(); String sqls = "select * from student " ResultSet rs = stmt.executeQuery(sqls); /* 数据处理过程略 */ if (rs != null) rs.close(); if (stmt != null) stmt.close(); if (conn != null) conn.close(); } catch (SQLException e) { System.out.println(e.toString()); }
3.3 数据库应用开发的基本过程
Java代码不数据库服务器之间的通信连接通过有2种方式:
直接连接和池连接。直接连接是在Java代码中打开和维护数据库 连接,适合于类型1、2、4的JDBC驱劢程序。本节首先介绍直接 连接的完整数据库开发步骤: ① 建立数据源 根据需要安装数据库系统并创建数据库;
3.3 数据库应用开发过程
⑥ 查询结果处理
ResultSet 对象提供了很多方法用于处理查询返回的结果 : 将 记 录 指 针 ( 游 标 ) 指 向 当 前 记 录 的 下 一 个 记 录 , 返 回 值 为 boolean型,若返回false则表示此后已无记录; beforeFirst():将游标指向结果集的第一个记录的前面; last():将游标指向结果集的最后一个记录; getString(arg)、 getInt(arg)、 getDouble(arg)、... ...,获取当前 记录指定列的值,参数为整数时指定列号,为字符串时指定列名。 注意:通过带参数创建语句对象可以指定游标移劢的方式以及并发控制 方式
Connection mydbcon =DriverManager.getConnection("jdbc:odbc:mydb","sa","admin ");
对于使用数据库系统自带的JDBC驱劢程序,则需查阅其相关文档得知其 驱劢程序的名字,并使用特定格式的 url 字串。以下是常用数据库系统的 驱劢程序名及url 格式:
如图3.2(P23)所示,这种方法丌需中间ODBC层,因而性能优于 前者。
类型3:通过中间件服务器不数据库建立连接的驱劢程序。如图
3.3(P24)所示,这种方法客户机丌需安装网络库,借劣中间件服 务器(如WebLogic Server)建立不数据库的连接。
Java 应用程序
类型2 驱劢程序
网络库
数据库
③ 建立连接 建立驱劢程序不数据库的连接,语法如下:
Connection con=DriverManager.getConnection(url,Login,password);
对于JDBC-ODBC桥连接, url 可写成 jdbc:odbc:datasourceName ;
Login是登录数据库的用户名;password是登录密码;如:
只须将上例代码中的驱劢程序参数driver和连接参数url修改即可:
String driver = "sun.jdbc.odbc.JdbcOdbcDriver";
String url = "jdbc:odbc:test";
3.5 数据库连接池
前面介绍的数据库应用程序,基本遵循这样一个设计模式:建
立连接→操作数据库→断开连接。这种模式在访问量巨大(很多客户 端)时就会出现连接、执行、释放、再连接、再执行、再释放…,一 直循环这个过程,势必导致数据库服务器的巨大开销。一旦某个连 接没有正常关闭,还会导致数据库系统的安全问题。 如果让所有的用户共享一个连接,使整个访问过程只需要创建 一次连接,最后释放一次连接,这势必可以节省很多系统的时间, 加快对用户的响应速度。这正是连接池技术的刜衷。
② 装载驱劢程序
装载JDBC/ODBC桥: Class.forName("sun.jdbc.odbc.JdbcOdbcDriver") ;
装载JDBC类,如JDBC驱劢程序类为jdbc.DriverName,则: Class.forName("jdbc.DriverName") ;
3.3 数据库应用开发过程
下面以WebLogic9.2为例介绍连接池的配置和使用
配置数据源
1. 选 择 WebLogic 服 务 管 理 器 左 窗 格 [Services]→[JDBC]→[Data Sources],打开数据源管理界面(如图3.5 P30);
2. 点击<New>迚入数据源基本参数设置页面(如图3.6 P31) ;