在类中创建连接方法在Java中是否有效
我正在使用Swing开发一个应用程序,因此在启动之前,我需要了解一些有关使用在类中创建连接方法在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
连接的基本知识。在许多教程中,我看到我们需要创建一个连接
类
,并使用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吗