【问题标题】:Working with Java & SQL使用 Java 和 SQL
【发布时间】:2014-02-28 21:11:41
【问题描述】:

我一直在玩 JDBC 驱动程序。我想从经验代码大师那里得到一些建议。我想知道这是否是查找是否连接到数据库的好方法。如果不是,有人可以告诉我他们会怎么做吗?

Connection con = null;

    try {
         con = DriverManager.getConnection("jdbc:mysql://localhost/"+database+"?+user="+user+"&password="+password);
    } catch (SQLException e) {
         System.out.println(e.getMessage());
            if (con != null) {
                System.out.println("hello");
            } else {
                System.out.println("Not Connected!");
            }
    }

我非常感谢所有有用的 cmets。非常感谢。

【问题讨论】:

    标签: java mysql sql jdbc


    【解决方案1】:

    如果getConnection 方法正常返回,并且没有抛出异常,那么已经建立了到数据库的连接。 catch 子句中的逻辑不是必需的,因为如果捕获到异常,则连接没有建立。


    返回的 Connection 对象必须是 close()d(许多 JDBC 类必须是,例如 Statements 和 ResultSets)。假设 Java7,确保Connection 关闭的便捷方法是使用 try-with-resources 语句:

    try (Connection con = DriverManager.getConnection(...))
    {
    }
    catch (final SQLException e)
    {
    }
    

    正如 SnakeDoc 在 cmets 中所述,这在生产系统中可能不切实际,因为建立与数据库的连接通常是一项昂贵的操作。

    【讨论】:

    • ... 这使得它相当不可重用,除非您只需要 db 来处理一小段代码(这是可能的!)
    • @SnakeDoc,这当然取决于他们尝试的内容。例如,可能是一个长时间运行的循环。我的意图是强调必须关闭连接,这是实现这一目标的便捷方式。
    • 还假设 OP 没有被 Java 6 或更早版本卡住。
    • 我完全理解 hmjd 是什么意思
    • 对于我想的小事来说已经足够了。我喜欢有一个“连接管理器”来打开数据库,并在运行时保持打开状态,然后再关闭它。与数据库交谈时,通常最长的部分是打开连接。
    【解决方案2】:

    JDBC API 将为您执行这些检查。每当您执行数据库操作时,例如打开连接、执行语句,它都会检查连接是否有效。否则会抛出异常。

    例如,Connection.createStatement 方法会抛出以下内容:

    SQLException - 如果发生数据库访问错误或在关闭的连接上调用此方法

    您所要做的只是一些基本的异常处理。用 try-catch 块包围你的 JDBC 调用是一种方法。您也可以抛出异常并在其他地方处理它。

    【讨论】:

      【解决方案3】:

      这绝对是一个好方法!如果无法初始化 conn,则可能是您的连接字符串错误或数据库已关闭。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-10-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-03-30
        相关资源
        最近更新 更多