JDBC管理结果集

管理结果集:
JDBC使用ResultSet来封装执行查询得到的查询结果,然后通过移动ResultSet的记录指针来取出结果集的内容。除此之外,JDBC还允许通过ResultSet来更新记录,并提供ResultSetMetaData来获得ResultSet对象的内容。

(1)可以使用absolute() previous(0 afterLast()等方法自由移动记录指针的ResultSet被称为可滚动的结果集
(2)在jdk 1.4之前,默认打开的ResultSet是不可滚动的,必须在创建Statement和PreparedStatement时传入额外的参数。从Java5.0之后,默认打开的ResultSet就是可以滚动的,无需传入参数。
(3)以默认方式打开的ResultSet是不更新的,如果希望创建可更新的ResultSet,则必须在创建Statement和PreparedStatement时传入额外的参数。Connection在创建Statement和PreparedStatement时还可额外传入如下两个参数。

******resultSetType:控制ResultSet的类型。该参数有以下三个值:

ResultSet.TYPE_FORWARD_ONLY 这个常量控制记录指针只能向前移动
ResultSet.TYPE_SCROLL_INSENSITINE 该常量控制记录指针的自由移动,但底层数据的改变不会影响ResultSet的内容
ResultSet.TYPE_SCROLL_SENSITIVE 该常量控制记录指针的自由移动,但\底层数据的改变会影响ResultSet的内容

*****resultSetConcurrency:控制ResultSet的并发 类型,有如下两个值。
ResultSet.CONCUR_READ_ONLY :表示ResultSet是只读的并发模式
ResultSet.CONCUR_UPDATABLE :表示ResultSet是可更新的并发模式

import java.io.FileInputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Properties;

public class ResultSetTest {

    String driver;
    String url;
    String user;
    String  pass;
    public void initParam(String  paramFile)
            throws Exception
    {
        //使用Propertics类来加载属性文件
        Properties  pro=new  Properties();
        pro.load(new FileInputStream(paramFile));

        driver=pro.getProperty(driver);
        url=pro.getProperty(url);
        user=pro.getProperty(user);
        pass=pro.getProperty(pass);
    }


    public void query(String  sql)  throws Exception
    {
        //加载驱动
        Class.forName(driver);
        Connection  conn=DriverManager.getConnection(url, user, pass);
        //通过Connection来创建一个PreparedStatement对象,传入控制结果集可滚动,可更新的参数
        PreparedStatement  pre= conn.prepareStatement(sql,ResultSet.TYPE_SCROLL_INSENSITIVE
                , ResultSet.CONCUR_UPDATABLE);
              ResultSet rs=pre.executeQuery();
              {
                  rs.last();
                  int rowCount=rs.getRow();
                  for(int i=rowCount;i>0;i++){
                      rs.absolute(i);
                      System.out.println(rs.getString(1)+"\t"
                      +rs.getString(2)+"\t"
                      +rs.getString(3));
                      //修改第二列的值
                      rs.updateString(2, "学生名"+i);
                      //提交修改
                      rs.updateRow();

                  }
              }
    }
    public static  void main(String[] args) throws Exception{
        ResultSetTest  rt=new ResultSetTest();
        rt.initParam("mysql.ini");
        rt.query("select   *  from   student_table");
    }


}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值