在java中获取数据库连接挂起

时间:2012-03-30 15:18:30

标签: java sql database

编写程序以从数据库中确定管理级别ID。我一遍又一遍地通过网站使用这种相同的连接方法,但它不会挂在其他任何地方。但是,这些方法并没有隐藏在实际的类中。是否有任何理由将此特定代码放入java类会使其挂起?

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.*;
import java.io.*;
import oracle.jdbc.driver.OracleDriver;
import java.sql.*;

public class connection 
{  

  public Connection getDBConnection()
  {
     java.sql.Connection conn=null;

     try
     {
        DriverManager.registerDriver(new OracleDriver());
        conn = DriverManager.getConnection("stuff"); //Hangs here for like 2 seconds

     }
        catch (Exception e)
        {
           e.printStackTrace();
        }

     return conn;       
  }
}

重申一下,我通过网站直接使用jsp(jsp中没有类),但对于这个特定的段,我将其实现为类中的方法。这似乎是唯一挂起的地方。另外,如果你可以给我特定的导入来使数据库连接工作,那么我可以摆脱其中的一些“。*”...这将是非常棒的。 感谢

编辑:为了更清晰,我创建了对象X,在对象X中创建了调用此方法的连接类对象。

所以,

 someClass whatever = new someClass(); 
 Connection conn = null; 
 conn = whatever.getDBConnection(); //hangs

2 个答案:

答案 0 :(得分:1)

你在其他地方汇集连接吗?如果您每次创建新连接,那么可能需要几秒钟。

答案 1 :(得分:1)

另外,为什么总是注册OracleDriver?

您应该只注册一次驱动程序。

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.*;
import java.io.*;
import oracle.jdbc.driver.OracleDriver;
import java.sql.*;

public class connection 
{  
  static {
      try {
         DriverManager.registerDriver(new OracleDriver());
      }
      catch (SQLException excep) { // log exception }
  }


  public Connection getDBConnection()
  {
     java.sql.Connection conn=null;

     try
     {
        conn = DriverManager.getConnection("stuff"); //Hangs here for like 2 seconds

     }
        catch (Exception e)
        {
           e.printStackTrace();
        }

     return conn;       
  }
}