日期:2014-05-20  浏览次数:20731 次

求助 刷新异常问题
本人最近做了一个小项目,oracle数据库 tomcat服务器 jdbc连接。
但是只要在一个从数据库下载数据的jsp页面按F5重复刷新,就会出现oracle拒绝连接异常的情况.  
可能是oracle的连接没有配好吧 各位帮帮忙?、、、、、感谢了。
Java code

     
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class JDBC_Conn {
      public Connection conn = null;
      public Statement  stmt = null;
      public ResultSet  rs = null;
      private static String  dbClassName ="oracle.jdbc.driver.OracleDriver";
      private static String  dbUrl ="dbc:oracle:thin:@127.0.0.1:1521:jzmorcl";
      private static String  user  = "scott";
      private static String  password  ="tiger";
        
public  static Connection getConnection()
{
            Connection conn = null;
            try {
              Class.forName(dbClassName).newInstance();
              conn = DriverManager.getConnection(dbUrl,user,password);
            }
            catch (Exception ee) {
               ee.printStackTrace();
            }
            if (conn == null) {
                  System.err.println();
                 
            }
            return conn;
         }  



/**
 * 功能:执行查询语句
 */
public  ResultSet executeQuery(String sql)
{
    try {
        conn =  getConnection();
        stmt =  conn.createStatement();                
        rs =    stmt.executeQuery(sql);            
        return rs;
    } catch (SQLException ex){    
          ex.printStackTrace();
          return null;
    }
}
/**
 * 功能:执行更新操作
 */

public int executeUpdate(String sql)
{
    int result = -1;
    try {
        conn = getConnection();                        //调用getConnection()方法构造Connection对象的一个实例conn
        //stmt = conn.createStatement();    
        stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
                ResultSet.CONCUR_UPDATABLE);    
        result = stmt.executeUpdate(sql);    //执行更新操作
    } catch (SQLException ex) {
          ex.printStackTrace();
          return  -1 ;
    }finally{
      this.close();
    }
      return result;
}

/**
 * 功能:关闭数据库的连接
 */
public void close() {
    try {
        if (rs != null) {
            rs.close();
        }
        if (stmt != null) {
            stmt.close();
        }
        if (conn != null) {
            conn.close();
        }
    } catch (Exception e) {
         e.printStackTrace(System.err);
    }
}      
}






------解决方案--------------------
建议楼主试试debug一下,看是不是在所作的业务方法中出错,还是数据库中有错误,还有就是你确信是第一次没有错误然后再刷新就是会有错?如果你第一次进入页面就刷新然后出错,那就不是因为刷新而引起的错误了!
------解决方案--------------------
确认你传值的方式,如果是用request等传值,有可能导致你刷新到时候该值为空
可以debug,不会debug可以print你发出请求的值,一般一开始能连上的话,应该
不是数据库配置的问题。
------解决方案--------------------
private static String dbUrl ="dbc:oracle:thin:@127.0.0.1:1521:jzmorcl";
这里没对,是jdbc:oracle:thin:@127.0.0.1:1521:jzmorcl

另外你代码质量
/**
 * 功能:关闭数据库的连接
 */
public void close() {
try {
if (rs != null) {
rs.close();
}
if (stmt != null) {
stmt.close();
}
if (conn != null) {
conn.close();
}
} catch (Exception e) {
e.printStackTrace(System.err);
}
}
假如if (rs != null) {
rs.close();
}
出异常,会导致if (conn != null) {
conn.close();
}
不会执行.
注意代码质量.