论坛首页 入门技术论坛

JDBC资料辅导(3)

浏览 1476 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2008-12-03  

JDBC2.0的新特性


  可滚动结果集(可双向滚动)
  批处理更新  ***
  可更新结果集   
 
1、批处理更新
Statement
addBatch(String sql), 方法会在批处理缓存中加入一条sql语句
executeBatch() ,执行批处理缓存中的所有sql语句。

PreparedStatement

addBatch() 将一组参数添加到此 PreparedStatement 对象的批处理命令中。
executeBatch() 将一批命令提交给数据库来执行,如果全部命令执行成功,则返回更新计数组成的数组。
PreparedStatement中使用批量更新时,要先设置好参数后使用addBatch()方法加入缓存。
注意:批量更新中只能使用更新或插入语句

execute(String sql),这个方法的返回值是boolean类型,如果返回true就表示sql是一个select语句,可以通过getResultSet()获得结果集,如果是false,sql就是DML语句或者是DDL语句。


2、可滚动结果集(可双向滚动),这种结果集不但可以双向滚动,相对定位,绝对定位,并且可以修改数据信息。

滚动特性
next(),此方法是使游标向下一条记录移动。
previous() ,此方法可以使游标上一条记录移动,前提前面还有记录。
absolute(int row),可以使用此方法跳到指定的记录位置。定位成功返回true,不成功返回false,返回值为false,则游标不会移动。
afterLast() ,游标跳到最后一条记录之后。
beforeFirst() ,游标跳到第一条记录之前。(跳到游标初始位)
first(),游标指向第一条记录。
last(),有彪指向最后一条记录。
relative(int rows) ,相对定位方法,参数值可正可负,参数为正,游标从当前位置向下移动指定值,参数为负,游标从当前位置向上移动指定值。

TYPE_FORWARD_ONLY ,该常量指示指针只能向前移动的 ResultSet 对象的类型。

TYPE_SCROLL_INSENSITIVE ,该常量指示可滚动但通常不受其他的更改影响的 ResultSet 对象的类型。
TYPE_SCROLL_SENSITIVE ,该常量指示可滚动并且通常受其他的更改影响的 ResultSet 对象的类型。
         
要使用可滚动结果集时,要在Statement创建时指定参数,才可以使用
Statement st=null;
st=con.createStatement(ReusltSet.TYPE_SCROLL_INSENSITIVE,ResuleSet.CONCUR_UPDATABLE)

ResultSet结果集中,先使用moveToInsertRow(),将游标移到和结果集结构类似的缓冲区中
然后可以使用updateXxx(int column,columnType value)方法来更新指定列数据,
再使用insertRow() 方法插入记录,
最后将游标指回原位,moveToCurrentRow() 。

能否使用可更新结果集,要看使用的数据库驱动是否支持,
还有只能用于单表且表中有主键字段(可能会是联合主键),不能够有表连接,会取所有非空字段且没有默认值。

能否使用JDBC2.0 ResultSet的新特性要看数据库驱动程序是否支持。


3、SQL3.0中的行类型

Array,数组
Sturct,结构
Blob,大的二进制数据文件。
Clob,大文本文件对象。
在使用上述大对象的时候,在使用JDBC插入记录时要先插入一个空的占位对象,然后使用
select blobdata from t_blob where id = " + id + " for update 这样的语法来对获得的大对象,进行实际的写入操作 Blod通过getBinaryOutputStream()方法获取流进行写入。getBinaryStream()方法获得流来获取blob中存储的数据。
clob的操作也和blob相同。getAsciiStream() 方法用于读取存储的文本对象,getAsciiOutputStream()方法之获得流用来向文件对象写入的。

论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics