gpt4 book ai didi

java - 在 Java 应用程序中打开和返回数据库连接的最佳方式?

转载 作者:搜寻专家 更新时间:2023-10-30 21:30:57 25 4
gpt4 key购买 nike

我提出了以下实用程序类:

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

public class MySqlConnection
{
private static String dbUrl = "jdbc:mysql://localhost:3306/database";
private static String dbUsername = "root";
private static String dbPassword = "mysql";

public static Connection getConnection()
{
Connection connection = null;
try {
Class.forName("com.mysql.jdbc.Driver");
connection = DriverManager.getConnection(dbUrl, dbUsername, dbPassword);
} catch (ClassNotFoundException e) {
System.out.println("Could not load JDBC driver: " + e.getMessage());
} catch (SQLException e) {
System.out.println("Could not connect to DB: " + e.getMessage());
}
return connection;
}
}

问题是:我不想从我的方法中返回 null,因为这样做会迫使我的调用者执行 if (connection ! = null) {...} 每次打开并想要使用连接时检查。我发现这些 null 检查很容易出错,并且想不惜一切代价避免它们。我还可以采用哪些其他方法来管理我的应用程序中的数据库连接?

最佳答案

首先,从 JDBC 4.0/Java 6 开始,不再需要调用 Class.forName()
( See is Class.forName() necessary )

接下来,不要隐藏异常。将它们扔进堆栈,让调用者决定如何处理异常。根据调用 getConnection() 的时间,您可能希望:

  • 向用户显示错误弹出框
  • 尝试使用不同的数据库进行连接
  • 运行一个脚本来尝试检查数据库的状态,如果出现故障则尝试重新启动它
  • 完全重试 getConnection()

我的意思是,不要害怕将异常抛出堆栈并让调用者适本地处理异常。

综上所述,您的 getConnection() 方法应该只需要存储您的数据库 URL、用户名和密码。

public class MySqlConnection
{
private static String dbUrl = "jdbc:mysql://localhost:3306/database";
private static String dbUsername = "root";
private static String dbPassword = "mysql";

public static Connection getConnection() throws SQLException
{
return DriverManager.getConnection(dbUrl, dbUsername, dbPassword);
}
}

实际上,getConnection() 很少会抛出 SQLException。我曾经看到它抛出 SQLException 的唯一场景是因为凭据不正确或数据库已关闭。

关于java - 在 Java 应用程序中打开和返回数据库连接的最佳方式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34487494/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com