当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《在Java应用程序中打开和返回数据库连接的最佳方法?》经验,为你挑选了1个好方法。

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

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) {...}每次打开时都要进行检查并想要使用连接.我发现这些空检查容易出错,并且不惜一切代价避免它们.我可以遵循哪种方法来管理我的应用程序中的数据库连接?



1> Andy Guibert..:

首先,从JDBC 4.0/Java 6开始,Class.forName()不再需要调用.
(参见Class.forName()必要的)

接下来,不要埋没异常.将它们扔到堆栈中,让调用者决定应该如何处理异常.根据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是因为凭据不正确或数据库下跌.

推荐阅读
保佑欣疼你的芯疼
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有