有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

sql无法调试Java中的“连接到数据库失败”异常

我在调试一个java异常时遇到了一个真正的问题。 该应用程序非常古老,是在一个未知(不是任何熟悉的框架)定制框架中编写的,我没有访问框架库的源代码,只有我拥有的类。我可以访问应用程序源代码,有时(不经常)会出现“连接到数据库失败”错误。我已经确定了代码块和方法,它们实际上连接到数据库,然后运行更新查询。 我认为这可能是SQL异常,所以尝试捕获它。。但它不是SQL异常,因为该异常仅由异常捕获块捕获。我没有从异常的堆栈跟踪中得到任何清晰的概念。下面是示例代码。你能帮我找出这个问题吗

public void method_insert() throws Exception{
    boolean connected = false;
    ** 
    **
    db.setAutoCommit(false);
    **
    try {
        connected = db.connect("jdbc/dbconnect");

    }catch(SQLException e){
        System.out.println("Error has occured in Connecting the database");
        e.printStackTrace();
    }

        try{
            String unqKey = "SELECT "+Constantes.ORA_SEQUENCES.get(..)+".NEXTVAL FROM DUAL";
            ResultSet rs = db.query(unqKey);

            if(rs.next()){
                curr_uk = rs.getInt(1);
                this.var1 = curr_uk;
            }
        } catch (SQLException e) {
            System.out.println("-------- An error occured in generating key from sequence ------");
            e.printStackTrace();
        }

        String query = ** actual insert query**

        item_Insert = db.prepareStatement(query);
        try{    

            db.setAutoCommit(false);
            try{    

                **
                **

                db.update(item_Insert);
                db.commit();
                System.out.println("table has been successfully updated....");

            }catch (SQLException e) {
                db.rollback();
                System.out.println("table updation failed. Rolling back");
                e.printStackTrace();
        } finally {
            item_Insert.close();
        }

    }catch(SQLException e){
        System.out.println("SQL Errored occoured in transaction.");
        e.printStackTrace();
    }catch (Exception e) {          // Here the Exception is getting caught. Below i have provided some log info also.
        System.out.println("Errored occoured in transaction.");
        e.printStackTrace();
    } finally {
        try {
            if(item_Insert != null)
                item_Insert.close();
        }catch (SQLException e1) {
            System.out.println("Some error has occured while closing item_Insert statement for method.");
            e1.printStackTrace();
        }
        try {
            db.disconnect();
        } catch (SQLException e) {
            System.out.println("Some error has occured while disconnecting db connection for method.");
            e.printStackTrace();
        }
    }
}

StackTrace in Log:

Errored occoured in transaction.
.....: java.lang.Exception: Failed to connect to database /
    at ...method(file.java:1009)
    ....
    ....
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
    at ...doFilter(SessionFilter.java:65)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:204)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
    at org.apache.catalina.valves.FastCommonAccessLogValve.invoke(FastCommonAccessLogValve.java:481)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:526)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
    at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:307)
    at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:385)
    at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:748)
    at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:678)
    at org.apache.jk.common.SocketConnection.runIt(ChannelSocket.java:871)
    at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
    at java.lang.Thread.run(Thread.java:595)

请注意:我使用的是Java1.5和Tomcat5.5服务器


共 (0) 个答案