`
wangqisen
  • 浏览: 47017 次
文章分类
社区版块
存档分类
最新评论

ResultSet 游标权限获取问题

 
阅读更多

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

java.sql.ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY

先看下面一段代码

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

protectedfinalStringdriver="org.gjt.mm.mysql.Driver";

/**
*数据库URL
*/

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

protectedfinalStringuserName="root";

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

protectedfinalStringuserPwd="123456";

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

protectedConnectioncon=null;

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

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

/*
*获取连接句柄
*/

Statementsmt
=con.createStatement(
ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_UPDATABLE);

ResultSetrs
=smt
.executeQuery(
"SELECT*FROMCurrentAccountWHEREAccountID="
+accountID);
while(rs.next())
{
withdrawCount
=Integer.parseInt(rs.getString("Counter"));
}

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

注意上面红字部分:

Statementsmt=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游标可以读取和更新数据库里的东西;

可以实现selectinsert操作;

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

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics