在类中创建连接方法在Java中是否有效

在类中创建连接方法在Java中是否有效,java,jdbc,connection,database-connection,Java,Jdbc,Connection,Database Connection,我正在使用Swing开发一个应用程序,因此在启动之前,我需要了解一些有关使用连接的基本知识。在许多教程中,我看到我们需要创建一个连接类,并使用getConnection()在项目中获得连接 但是我已经创建了一个connectionMethod是否可以通过创建connection类的object并使用连接来获取整个项目中的连接 这是我的代码: package ncl; import java.sql.Connection; import java.sql.DriverManager; impor

我正在使用Swing开发一个应用程序,因此在启动之前,我需要了解一些有关使用
连接的基本知识。在许多教程中,我看到我们需要创建一个
连接
,并使用
getConnection()
在项目中获得连接

但是我已经创建了一个
connectionMethod
是否可以通过创建connection类的
object
并使用连接来获取整个项目中的连接

这是我的代码:

package ncl;

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


public class Test {

    Connection connection=null;
    public void connectionMethod() {
        try {
            Class.forName("org.h2.Driver");
            connection=DriverManager.getConnection("jdbc:h2:~/test","sa", "");  

        } catch (ClassNotFoundException | SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();

        }
    }

    public static void main(String[] args) {

        new Test().connectionMethod();

        try {

            // DO STUFF HERE

        } catch (Exception e) {
            // TODO: handle exception
        }finally {
            try {
                new Test().connection.close();
            } catch (Exception e2) {
                // TODO: handle exception
            }
        }

    }

}

我想知道这种方法是否好。

您可以使用下面的实用程序类:

public class MyConnection {

    private Connection con = null;

    public Connection getConnection() {
        try {
            if (con == null) {
                Class.forName("org.h2.Driver");
                con = DriverManager.getConnection("jdbc:h2:~/test", "sa", "");
            }

        } catch (Exception e) {
            e.printStackTrace();
        }
        return con;
    }
}
要获得连接,可以调用MyConnection().getConnection() 例如: 如果要在任何类中获得连接,请执行以下操作:

Connection con = new MyConnection().getConnection();

这完全取决于从业者想要如何编码。理想情况下,我们应该在实现中遵循这些原则,以实现许多特性,如低耦合、高内聚等

您说过,在许多教程中,它们都是单独的类,只提供连接。避免依赖性问题是一个很好的实践,我们可以更有效地将责任分配给类。因此,您还应该通过创建只提供连接的新类来实现这一点

对于上面提到的代码,您犯了一些错误。您首先获取了一个
Test
类的实例,该类具有
连接
,并且您没有将其分配给任何变量。因此,当您需要连接时,无法进一步使用它。另一个错误是,您试图通过创建另一个显然没有启动连接的
Test
类实例来关闭连接

因此,您可以做出适当的建议更改

ConnectionFactory.java:

这将提供连接对象

package ncl;

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

public class ConnectionFactory {

    Connection connection=null;
    public void connectionMethod() {
        try {
            Class.forName("org.h2.Driver");
            connection=DriverManager.getConnection("jdbc:h2:~/test","sa", "");  

        } catch (ClassNotFoundException | SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();

        }
    }
}
Test.java:

在这里编写实际代码

package ncl;

import java.sql.SQLException;

public class Test {

    public static void main(String[] args) {

        ConnectionFactory connectionObject = new ConnectionFactory();
        connectionObject.connectionMethod();

        try {

            // DO STUFF HERE

        } catch (Exception e) {
            // TODO: handle exception
        }finally {
            try {
                connectionObject.connection.close();
            } catch (Exception e2) {
                // TODO: handle exception
            }
        }

    }

}

不,这不好。您正在创建一个
Test
实例并将其丢弃,然后创建另一个没有连接的Test实例(它是
null
)。您能帮我处理这个@Mark rottevel吗