jdbc学习笔记(2)

::在可滚动结果集中移动游标

下面的代码可以创建一个可滚动结果集:

Statement stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,

          ResultSet.CONCUR_UPDATABLE);

(注意那两个方法参数)

第一个参数用来表明ResultSet的类型(可否滚动),第二个参数用来说明只读还是可更新。

可以用 int type=rs.getType()方法检查是否为可滚动结果集。

下面一段代码可以用来倒着打印结果集:

ResultSet rs=stmt.executeQuery("select cof_name from coffees ");

     rs.afterLast();

     while(rs.previous()){

        String s=rs.getString(1);

        System.out.println(s);

     }

absolute()relative()可以把游标移动到指定的行,其中absolute()中的游标的计算方法是绝对值,也就是说它每次都是第一行开始计算,relative()方法是相对于目前游标所在位置计算,

可以用getRow()来返回游标目前所在位置:

rs.absolute(5);

     int rowNum=rs.getRow();

还有方法 isFirst(),isLast(),isBeforeFirst(),isAfterLast()

用来看游标是否在特定的位置。

::对可更新的结果进行更新:

当创建好的一个结果集是可更新的时,就可以用编程的方式对其进行更新,

rs.last();

rs.updateFloat("price", 100f);

这段代码可以实现的功能是把当前行的price所指行的值改为100,它只可以更新结果集中的数据,如果要更新数据库表中的数据,就必须再加上一条rs.updateRow()语句,并且必须在移动游标以前用这条语句,在调用rs.updateRow()语句前可以调用rs.cancelRowUpdate()取消先前的更改,但如果用rs.updateRow()更新了数据库,那么用rs.cancelRowUpdate()就没用了,

当然也可以进行插入和删除行,下面是一段实现代码:

rs.moveToInsertRow();

rs.updateString(“cof_name”,”cona”);

              .

              .

rs.insertRow();

可以用rs.deleteRow()方法删除行,同时删除结果集和表中的数据

(注:上面所说的技术,在我的环境下不能实现,可能是这个版本mysql不支持这个技术,)

::建立批量更新:

批量技术只能用于DDL语句和更新语句,它是用一个命令列表来实现,

con.setAutoCommit(false);//关闭自动提交模式

     Statement stmt=con.createStatement();

     stmt.executeUpdate("create table whl( id integer,name varchar(20),age integer)");

        stmt.addBatch("insert into whl values(1,'whl',20)");//SQL增加到命令列表中

        stmt.addBatch("insert into whl values(2,'nj',20)");

        stmt.addBatch("insert into whl values(3,'java',30)");

        stmt.addBatch("insert into whl values(4,'jsp',10)");

        int[] updatecounts=stmt.executeBatch();//将这个列表中的SQL语句发送到数据库,它会返回一个int[]数组,对每一条语句的执行情况进行记录。

        con.commit();//批量更新永久生效,

        con.setAutoCommit(true);

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值