Result set type is TYPE_FORWARD_ONLY错误...
不知道为什么会出这个错.
package library;
import java.sql.DriverManager;
import java.sql.Connection;
import java.sql.Statement;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.swing.JOptionPane;
class Data2{
Connection con; //声明对象
Statement s;
public boolean getData()//加载驱动方法,无需参数,必须在声明Data对象之后
{
try{
Class.forName( "sun.jdbc.odbc.JdbcOdbcDriver "); //加载驱动语句
}catch(ClassNotFoundException cnfe)
{
JOptionPane.showMessageDialog(null, "加载驱动出错 "+cnfe.getMessage(), "出错 ",JOptionPane.ERROR_MESSAGE);
}
try{
con=DriverManager.getConnection( "jdbc:odbc:test ");//创建连接
s=con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE); //创建执行对象
return true; //如果程序执行到这个地方则返回true表示执行成功
}catch(SQLException e1)
{
JOptionPane.showMessageDialog(null, "创建连接或执行对象时出错 "+e1.getMessage(), "出错 ",JOptionPane.ERROR_MESSAGE);
}
return false; //执行到这的时候说明出错了
}
public ResultSet select(String sqlstr)
{
ResultSet rs=null;
try{
rs = s.executeQuery(sqlstr); //执行查询
return rs; //运行到这里时表示已经成功执行查询
}catch(SQLException e)
{
JOptionPane.showMessageDialog(null, "执行查询语句出错! "+e.getMessage(), "出错 ",JOptionPane.ERROR_MESSAGE);
}
return rs; //运行到这里时表示已经出错
}
}
public class Untitled1 {
public static void main(String [] args)
{
try{
Data2 aa = new Data2();
aa.getData();
ResultSet rs = aa.select( "use library select * from BookMessage ");
rs.absolute(1);
System.out.println(rs.getString(1));
}catch(SQLException se)
{
System.out.println(se.getMessage());
}
}
}
[解决办法]
Result set type is TYPE_FORWARD_ONLY
这说明你用的数据库的记录集只支持向前滚动,如果你确实需要记录集的游标向后滚动的话,那就改改数据库的配置吧。具体如何改,可以查看数据库的帮助。
[解决办法]
rs.absolute(1);
System.out.println(rs.getString(1));
游标已经到第一个了,下面只能写System.out.println(rs.getString(2));
因为定义的游标只能向前滚动
TYPE_SCROLL_INSENSITIVE代表可以向前也可以向后