呵呵,并非驱动的问题。是你的结果集不支持前后滚动;创建statement的代码应为:stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);

解决方案 »

  1.   

    package tics;import java.util.*;
    import java.sql.*;
    import java.io.*;
    import javax.naming.*;
    import javax.sql.*;
    import org.apache.log4j.Logger;/**
     * 连接数据库,取得VATCODE,更改SB_FB提交标识,执行SQL语句(查询或更改)
     */
    public class DbConnection {
        Connection conn = null;
        Statement stmt = null;
        ResultSet rset = null;
        static Logger logger = Logger.getLogger("tics.db");    public DbConnection() { }
        /************************************************
         * 打开数据库连接
         * 通过命名为etaxDS的DataSource连接数据库
        ************************************************/
        public boolean openConnection() {
            try {
                Context ctx = new InitialContext();
                javax.sql.DataSource ds = (javax.sql.DataSource)ctx.lookup("ticsDS");
                this.conn = ds.getConnection();
                logger.debug("openConnection ok") ;
            //this.conn = DriverManager.getConnection ("jdbc:WebLogic:pool:etax Connection Pool ",null);
            } catch (Exception e) {
                logger.error("打开数据库连接错误!" + e.getMessage());
                return false;
            }
            return true;
        }    /*************************************************
         * executeQuery and executeUpdate
         * query and update DB
        *************************************************/
       public ResultSet executeQuery(String query) throws SQLException
       {
           //ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE
           stmt = conn.createStatement();
           rset = stmt.executeQuery(query);
           logger.debug("executeQuery(" + query + ")");
           return rset;
       }    public ResultSet executeScrollQuery(String query) throws SQLException
        {
            //ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE
            stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
                                        ResultSet.CONCUR_UPDATABLE);
            rset = stmt.executeQuery(query);
            logger.debug("executeScrollQuery(" + query + ")");
            return rset;
        }    public void executeUpdate(String query) throws SQLException {
            stmt = conn.createStatement();
            stmt.executeUpdate(query);
            logger.debug("executeUpdate(" + query + ")");
            if (stmt != null)
                stmt.close();
        }    public void rsclose() throws SQLException {
            //if(rset != null) rset.close();
            //rset = null;
            if (stmt != null)
                stmt.close();
            stmt = null;
            logger.debug("rsclose ok");
        }    public void close() throws SQLException {
            //if(rset != null) rset.close();
            if (stmt != null)
                stmt.close();
            if (conn != null)
                conn.close();
            logger.debug("close ok");
        }    protected void finalize() throws Throwable {
            close();
        }    public static void main(String [] args) {
            //Design for test purpose.
            //DbConnection dc = new DbConnection();
            //System.out.println(dc.openConnection());
        }
    }如果是这个类,用execeuteScrool
      

  2.   

    public ResultSet executeScrollQuery(String query) throws SQLException
        {
            //ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE
            stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
                                        ResultSet.CONCUR_UPDATABLE);
            rset = stmt.executeQuery(query);
            logger.debug("executeScrollQuery(" + query + ")");
            return rset;
        }    public void executeUpdate(String query) throws SQLException {
            stmt = conn.createStatement();
            stmt.executeUpdate(query);
            logger.debug("executeUpdate(" + query + ")");
            if (stmt != null)
                stmt.close();
        }