当我们在写数据库连接的时候,有时候回出现一些错误如:
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 操作;
在了解参数的用法之后,为保证数据安全性,和数据库数据的安全性维护,请根据需要慎重使用。