`
guiqing85
  • 浏览: 162921 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

JDBC 学习笔记(三)

    博客分类:
  • JDBC
阅读更多
JDBC 学习笔记(三)

三、几个重要接口:

(1) Statement  —— SQL语句执行接口

Statement接口代表了一个数据库的状态,在向数据库发送相应的SQL语句时,都需要创建Statement接口或者PreparedStatement接口。在具体应用中,Statement主要用于操作不带参数(可以直接运行)的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将这些信息返回给我们。     

                数据库元数据 Database MetaData     使用connection.getMetaData()获得

MetaData包括:                                  包含了关于数据库整体元数据信息。

                结果集元数据 Result Set MetaData    使用resultSet.getMetaData()获得

                                           比较重要的是获得表的列名、列数等信息。

结果集元数据对象: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   能自行处理,就进行异常处理。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics