ResultSet 游标权限获取问题

来源:互联网 发布:学生手机兼职赚钱软件 编辑:程序博客网 时间:2024/06/06 05:54
ResultSet 游标权限获取问题

当我们在写数据库连接的时候,有时候回出现一些错误如:

java.sql.ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY

先看下面一段代码

/**
     * 连接数据库用的驱动类型
     
*/

    
protected final String driver = "org.gjt.mm.mysql.Driver";

    
/**
     * 数据库URL
     
*/

    
protected final String dbURL = "jdbc:mysql://localhost:3306/mydbase";
    
/**
     * 数据库管理员用户名
     
*/

    
protected final String userName = "root";

    
/**
     * 数据库管理员密码
     
*/

    
protected final String userPwd = "123456";

    
/**
     * 数据库连接对象
     
*/

    
protected Connection con = null;

/*
*获取数据库连接
*/

    con 
= DriverManager.getConnection(dbURL,  userName, userPwd);

/*
*获取连接句柄
*/

        Statement smt 
= con.createStatement(
            ResultSet.TYPE_SCROLL_INSENSITIVE,
            ResultSet.CONCUR_UPDATABLE);

        ResultSet rs 
= smt
            .executeQuery(
"SELECT * FROM CurrentAccount WHERE AccountID = "
                
+ accountID);
        
while (rs.next())
        
{
        withdrawCount 
= Integer.parseInt(rs.getString("Counter"));
        }

        rs.close();
        smt.close();
        con.close();

注意上面红字部分:

   Statement smt = con.createStatement(
            ResultSet.TYPE_SCROLL_INSENSITIVE,
            ResultSet.CONCUR_UPDATABLE);

呵呵,括号里是不是多了两个参数:

  ResultSet.TYPE_SCROLL_INSENSITIVE,
    ResultSet.CONCUR_UPDATABLE

 

这两个东西属于java.sql.ResultSet(大家可以看到我们的程序前面都有import java.sql.*;呵呵)

那这些参数有什么用呢?

 

ResultSet.TYPE_FORWARD_ONLY             在不设定的情况下,默认是这个,rs游标只能实现 next()操作;

 

ResultSet.TYPE_SCROLL_INSENSITIVE    数据在更新之后则无权再次获取数据集

ResultSet.TYPE_SCROLL_SENSITIVE        数据在更新之后则可以再次获取数据集

需要指定,可以实现rs 游标的afterLast()、previous()、absolute()、relative()、first()、last()操作(具体使用请自己查看java API文档);

 

 

ResultSet.CONCUR_READ_ONLY            在不设定的情况下为默认参数,

        只读:获取改数据库句柄的rs 游标只能读取数据库里的东西;

                                                                     可以实现select 操作;

 

ResultSet.CONCUR_UPDATABLE            可更新:获取改数据库句柄的rs 游标可以读取和更新数据库里的东西;

                                                                     可以实现 select  insert 操作;

 

在了解参数的用法之后,为保证数据安全性,和数据库数据的安全性维护,请根据需要慎重使用。

原创粉丝点击