03-JDBC学习手册:JDBC中几个重要接口和异常处理

来源:互联网 发布:杀毒软件知乎 编辑:程序博客网 时间:2024/06/05 19:54

一、JDBC中几个重要接口

1  Statement

——— SQL  语句执行接口
Statement 接口代表了一个数据库的状态,在向数据库发送相应的 SQL 语句时,都需要创建 Statement 接口或 者PreparedStatement 接口。在具体应用中,Statement 主要用于操作不带参数(可以直接运行)的 SQL 语句,比如删除语句、添加或更新。


扩展:如何进行模糊查询?
----关键点:如何根据条件拼接 SQL 语句。

2  PreparedStatement

———  预编译的 Statement
第一步:通过连接获得 PreparedStatement 对象,用带占位符(?)的 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 语句的格式是不同的

注意点:

1、使用预编译的 Statement 编译多条 Sql 语句一次执行
2、可以跨数据库使用,编写通用程序
3、能用预编译时尽量用预编译


3  ResultSet

—— 结果集操作接口
ResultSet 接口是查询结果集接口,它对返回的结果集进行处理。ResultSet 是程序员进行 JDBC 操作的必需接口。

4  ResultSetMetaData

—— 元数据操作接口
ResultSetMetaData 是对元数据进行操作的接口,可以实现很多高级功能。Hibernate 运行数据库的操作,大部分都是通过此接口。可以认为,此接口是 SQL 查询语言的一种反射机制。
ResultSetMetaData 接口可以通过数组的形式,遍历数据库的各个字段的属性,对于我们开发者来说,此机制的意义重大。

JDBC 通过元数据(MetaData)来获得具体的表的相关信息,例如,可以查询数据库中有哪些表,表有哪些字段,以及字段的属性等。MetaData 中通过一系列 getXXX 将这些信息返回给我们。



结果集元数据对象:ResultSetMetaData meta = rs.getMetaData();

  •   字段个数:meta.getColomnCount();
  •   字段名字:meta.getColumnName();
  •   字段 JDBC 类型:meta.getColumnType();
  •   字段数据库类型:meta.getColumnTypeName();
数据库元数据对象:DatabaseMetaData dbmd = con.getMetaData();
数据库名=dbmd.getDatabaseProductName();
数据库版本号=dbmd.getDatabaseProductVersion();
数据库驱动名=dbmd.getDriverName();
数据库驱动版本号=dbmd.getDriverVersion();
数据库 Url=dbmd.getURL();
该连接的登陆名=dbmd.getUserName()


二、JDBC异常处理

JDBC 中,和异常相关的两个类是 SQLException 和 SQLWarning。

1. SQLException 类:用来处理较为严重的异常情况。
比如:
① 传输的 SQL 语句语法的错误;
   ② JDBC 程序连接断开;
   ③ SQL 语句中使用了错误的函数。
SQLException 提供以下方法:
getNextException() —— 用来返回异常栈中的下一个相关异常;
getErrorCode() —— 用来返回代表异常的整数代码 (error code);
getMessage() —— 用来返回异常的描述信息 (error message)。

2. SQLWarning 类:用来处理不太严重的异常情况,也就是一些警告性的异常。其提供的方法和使用与 SQLException 基本相似。

结合异常的两种处理方式,明确何时采用哪种。
A. throws 处理不了,或者要让调用者知道,就 throws;
B. try … catch 能自行处理,就进行异常处理。