javaee中的oracle数据库连接

javaee中的oracle数据库连接,java,Java,我是java新手,我有一个疑问: 我正在使用此方法重新调整con: package mypackage; public class DBconnection { Connection con = null; public Connection getConnection() throws Exception, SQLException { try { Class.forName("oracle.jdbc.driver.OracleDriver");

我是java新手,我有一个疑问:

我正在使用此方法重新调整con:

package mypackage;
public class DBconnection {
 Connection con = null;

public Connection getConnection() throws Exception, SQLException
{
    try
    {
         Class.forName("oracle.jdbc.driver.OracleDriver");
         con=DriverManager.getConnection("jdbc:oracle:thin:@zzz:1521:zzz","zzz", "zzz");
    }
    catch(Exception e)
    {

    }
    return con;
}

public void removeConnection() throws SQLException
{
    con.close();
}
}

现在当我调用
getConnection()方法然后我得到con,现在在使用prepareStatement时,我如何在我的查询中使用它

我叫它

DBconnection dbconnect = new DBconnection();

 dbconnect.getConnection().prepareStatement(""); //is this the right way to write??

在这些之后,我应该如何关闭连接

dbconnect.removeConnection();

是的,是这样的:

DBconnection dbconnect = new DBconnection();
try{
    PreparedStatement ps = dbconnect.getConnection().prepareStatement("...");
    try{
      // Something with ps...
    }finally{
      ps.close();
    }
}finally{
    dbconnect.removeConnection();
}

是的,是这样的:

DBconnection dbconnect = new DBconnection();
try{
    PreparedStatement ps = dbconnect.getConnection().prepareStatement("...");
    try{
      // Something with ps...
    }finally{
      ps.close();
    }
}finally{
    dbconnect.removeConnection();
}

不,这不是在JavaEE中获得数据库连接的方式。您应该让JavaEE为您处理连接,您只需从JavaEE获得它。本教程可能是您的一个良好开端:

不,这不是在JavaEE中获得数据库连接的方式。您应该让JavaEE为您处理连接,您只需从JavaEE获得它。本教程可能是您的良好开端:

您应该使用以下代码:

DBconnection dbconnect = new DBconnection();
Connection con = dbconnect.getConnection();
String sql = "SELECT * FROM table_name"
PreparedStatement prest = con.prepareStatement(sql);

此代码与您的第一选择类似。

您应该使用此代码:

DBconnection dbconnect = new DBconnection();
Connection con = dbconnect.getConnection();
String sql = "SELECT * FROM table_name"
PreparedStatement prest = con.prepareStatement(sql);
private static Connection con = null;

public Connection getConnection(){
    if(con == null){
        try
        {
             Class.forName("oracle.jdbc.driver.OracleDriver");
             con=(Connection) DriverManager.getConnection("jdbc:oracle:thin:@zzz:1521:zzz","zzz", "zzz");
        }
        catch(Exception e)
        {

        }
    }
    return con;
}

此代码类似于您的第一个选择。

管理数据库连接的最佳方法是允许Java EE容器管理数据库连接池。这可确保断开空闲连接并将其重新用于其他传入连接请求

private static Connection con = null;

public Connection getConnection(){
    if(con == null){
        try
        {
             Class.forName("oracle.jdbc.driver.OracleDriver");
             con=(Connection) DriverManager.getConnection("jdbc:oracle:thin:@zzz:1521:zzz","zzz", "zzz");
        }
        catch(Exception e)
        {

        }
    }
    return con;
}

但是,如果您喜欢使用自己的数据库管理器类来维护连接,那么最好确保在finally块中关闭连接,这将确保由于代码块中抛出异常而没有活动连接。

管理数据库连接的最佳方法是允许Java EE容器管理数据库连接池。这可确保断开空闲连接并将其重新用于其他传入连接请求


但是,如果您喜欢使用自己的数据库管理器类来维护连接,那么最好确保在finally块中关闭连接,这将确保由于代码块中抛出异常而没有活动连接。

thnx for d reply,但它是否正确关闭了连接?我的意思是,如果我正在编写dbconnect.removeConnection();在一个PreparedStatement ps=dbconnect.getConnection().prepareStatement(“第一个sql查询”)之后;然后,当我使用另一个dbconnect.getConnection().prepareStatement(“第二个sql查询”)时;然后,当我在第一次sql查询之后已经关闭了连接时,第二次sql查询是如何执行的?在已经包含一条PreparedStatement的块中运行所有代码。如果需要在其他地方重用DBconnection,最好修改DBconnection类,使其具有始终返回新连接的方法(无需将其保存到实例变量),并使removeConnection方法接受要删除的连接-尽管此方法通常称为“releaseConnection”按照惯例,我声明了另一个getConnection1()方法,以及另一个removeConnection1()和PreparedStatement ps=dbconnect.getConnection1().prepareStatement(“第二个sql查询”);并关闭dbconnect.removeConnection1();//你是这样说的吗?不,请不要那样做。您最好还是听从PeterPeiGuo的建议,使用J2EE标准进行连接池。thnx for d reply但是它是否正确地关闭了连接?我的意思是,如果我正在编写dbconnect.removeConnection();在一个PreparedStatement ps=dbconnect.getConnection().prepareStatement(“第一个sql查询”)之后;然后,当我使用另一个dbconnect.getConnection().prepareStatement(“第二个sql查询”)时;然后,当我在第一次sql查询之后已经关闭了连接时,第二次sql查询是如何执行的?在已经包含一条PreparedStatement的块中运行所有代码。如果需要在其他地方重用DBconnection,最好修改DBconnection类,使其具有始终返回新连接的方法(无需将其保存到实例变量),并使removeConnection方法接受要删除的连接-尽管此方法通常称为“releaseConnection”按照惯例,我声明了另一个getConnection1()方法,以及另一个removeConnection1()和PreparedStatement ps=dbconnect.getConnection1().prepareStatement(“第二个sql查询”);并关闭dbconnect.removeConnection1();//你是这样说的吗?不,请不要那样做。你最好还是听从PeterPeiGuo的建议,使用J2EE标准进行连接池。我已经在java类中定义了这个连接,并调用了getConnection();在不同的servlet中,当我在java web中实现这一点时,这就是为什么我编写了j2eeok thnx作为您的回复,但是您能给我一些如何创建连接池的想法吗,我是这个领域的新手,我没有足够的知识,但我想知道如何创建连接池来处理jdbc连接?是的,我使用的是tomcat服务器,并在oracle 10g中键入4 jdbc连接。本页末尾有一些示例,您可以先尝试POJO,但是最终,使用resource方式可能会更好。thnx如果我将尝试使用POJO,那么我应该使用它:DBconnection dbconnect=new DBconnection();试试{PreparedStatement ps=dbconnect.getConnection().prepareStatement(“…”);试试{//Something with ps...}最后{ps.close();}最后{dbconnect.removeConnection();}不,不,我正在jsp、servlet和java类中使用这些。我已经在java类中定义了这个连接,并调用了getConnection();在不同的servlet中,由于我在java web中实现了这一点,这就是为什么我编写了j2eeok thnx作为您的回复,但是您能给我一些如何创建连接池的想法吗?我对这个领域是新手,我没有足够的知识,但我想知道如何创建连接池来处理jdbc conn