可能是JDBC版本的问题……以前有人问过差不多的问题,他用的JDBC 1.0,只能取出120条数据……后来换成2.0就好了……你看看是不是这个问题?

解决方案 »

  1.   

    jdbc2.0在那里可以下载?
    我用的是1.2的版本,但是同事做的程序就大大的超过了120条纪录,用的也是
    jdbc1.2,但是一样取得数据。对了,有一个重要的信息没有提供。
    我的数据库连接类原来把
    conn = DriverManager.getConnection(sConnStr,sUsername,sPassword);
    写在类的每个方法里面,就没有开始说的问题,代码如下:
    package mms;//用oracle专用引擎访问数据库
    import java.sql.*;
    public class connDB_oradrv {  String sDBDriver = "oracle.jdbc.driver.OracleDriver";
      String sConnStr ="jdbc:oracle:thin:@wfecs:1521:wfecs";
      String sUsername="manager";
      String sPassword="system";
      Connection conn = null;
      ResultSet rs = null;    public connDB_oradrv()
        {
            try
            {
               Class.forName(sDBDriver);        }
            catch(java.lang.ClassNotFoundException e)
            {
                System.err.println("dbConnection_head(): " + e.getMessage());
            }
        }    public void executeInsert(String sql)//插入数据
        {
            try
            {
                conn = DriverManager.getConnection(sConnStr,sUsername,sPassword);
                Statement stmt = conn.createStatement();
                stmt.executeUpdate(sql);
            }
            catch(SQLException ex)
            {
                System.err.println("dbConnection_insert.executeUpdate:"+ex.getMessage());
            }
        }
        public ResultSet executeQuery(String sql)//查询数据
        {
            rs = null;
            try
            {
                conn = DriverManager.getConnection(sConnStr,sUsername,sPassword);
                Statement stmt = conn.createStatement();
                rs = stmt.executeQuery(sql);
            }
            catch(SQLException ex)
            {
                System.err.println("dbConnection_query.executeQuery:"+ex.getMessage());
            }
            return rs;
        }
        public void executeUpdate(String sql)//修改数据
        {
            try
            {
                  conn = DriverManager.getConnection(sConnStr,sUsername,sPassword);
                  Statement stmt = conn.createStatement();
                  stmt.executeUpdate(sql);
            }
            catch(SQLException ex)
            {
                System.err.println("dbConnection_update.executeDelete:"+ex.getMessage());
            }
        }
        public void executeDelete(String sql)//删除数据
        {
            try
            {
                  conn = DriverManager.getConnection(sConnStr,sUsername,sPassword);
                  Statement stmt = conn.createStatement();
                  stmt.executeUpdate(sql);
            }
            catch(SQLException ex)
            {
                System.err.println("dbConnection_delete.executeDelete:"+ex.getMessage());
            }
      }
    }后来我把
    conn = DriverManager.getConnection(sConnStr,sUsername,sPassword);
    写在构造函数里面,就报了上面说的错误:package mms;//用oracle专用引擎访问数据库
    import java.sql.*;
    public class connDB_oradrv {  String sDBDriver = "oracle.jdbc.driver.OracleDriver";
      String sConnStr ="jdbc:oracle:thin:@wfecs:1521:wfecs";
      String sUsername="manager";
      String sPassword="system";  Connection conn = null;
      ResultSet rs = null;    public connDB_oradrv()
        {
            try
            {
               Class.forName(sDBDriver);
                    try{
                        conn = DriverManager.getConnection(sConnStr,sUsername,sPassword);
                    }
                    catch(SQLException ex)
                    {
                        System.err.println("dbConnection.executeUpdate:"+ex.getMessage());
                    }        }
            catch(java.lang.ClassNotFoundException e)
            {
                System.err.println("dbConnection_head(): " + e.getMessage());
            }
        }    public void executeInsert(String sql)//插入数据
        {
            try
            {
                //conn = DriverManager.getConnection(sConnStr,sUsername,sPassword);
                Statement stmt = conn.createStatement();
                stmt.executeUpdate(sql);
            }
            catch(SQLException ex)
            {
                System.err.println("dbConnection_insert.executeUpdate:"+ex.getMessage());
            }
        }
        public ResultSet executeQuery(String sql)//查询数据
        {
            rs = null;
            try
            {
                //conn = DriverManager.getConnection(sConnStr,sUsername,sPassword);
                Statement stmt = conn.createStatement();
                rs = stmt.executeQuery(sql);
            }
            catch(SQLException ex)
            {
                System.err.println("dbConnection_query.executeQuery:"+ex.getMessage());
            }
            return rs;
        }
        public void executeUpdate(String sql)//修改数据
        {
            try
            {
                  //conn = DriverManager.getConnection(sConnStr,sUsername,sPassword);
                  Statement stmt = conn.createStatement();
                  stmt.executeUpdate(sql);
            }
            catch(SQLException ex)
            {
                System.err.println("dbConnection_update.executeDelete:"+ex.getMessage());
            }
        }
        public void executeDelete(String sql)//删除数据
        {
            try
            {
                  //conn = DriverManager.getConnection(sConnStr,sUsername,sPassword);
                  Statement stmt = conn.createStatement();
                  stmt.executeUpdate(sql);
            }
            catch(SQLException ex)
            {
                System.err.println("dbConnection_delete.executeDelete:"+ex.getMessage());
            }
      }
    }
    不知道如何是好???
      

  2.   

    奇怪:rs = conn.executeQuery(sql)这句居然没报错?Connection有这个方法?
    你用的JDK是什么版本的呢?JDBC的版本是怎么知道的?建议:
    1、安装最新的JDK和ORACLE的JDBC驱动……
    2、一般写数据库连接类的时候把连接的动作写为一个方法比较好,象这样:
        boolean connect(){
            try {
                Class.forName(driverName);
                conn = DriverManager.getConnection (strUrl,username,password);
                stmt = conn.createStatement();
            }
            catch (Exception ex) {
                System.out.println("Err at connect(): " + ex);
                return false;
            }
            return true;
        }
    你试试……
      

  3.   

    对了,你用Statement的getMaxRows()方法看看最大记录数有没限制……
      

  4.   


    超出打开游标的最大数 的错误我以前遇到过,也曾折腾了我很久,最后我在oracle的新闻组也问了,他们给的回复是我要及时关闭用过的connection,我反复看代码才发现是我没能及时关闭不用的statement造成的。
      

  5.   


    同意ender(ender)的,编程习惯对于排错很重要。