【问题标题】:Java program will not connect to mySQL databaseJava 程序将无法连接到 mySQL 数据库
【发布时间】:2012-03-13 14:09:18
【问题描述】:

使用一个简单的在线示例,我正在运行一个 Java 程序来从表中返回用户。

数据库是 MySQL。我已经下载了 JDBC 驱动程序,将它存储在我的 JRE7 /lib 文件夹中。

问题是程序永远不会连接到数据库,它会跳过整个 try 块并在最后打印出一个“test”字符串。我是否忽略了这方面的重要一步?真的很郁闷!!

编辑:最好描述一下我是如何尝试建立与数据库的连接的。

mysql-connector-java-5.1.18-bin 存放在 jre7/lib 中。

我启动了 mysql 工作台。我创建的连接名称为 com.fyp.db,主机地址为 127.0.0.1:3306。

然后我运行我的代码,它尝试查询由 mySQL 工作台提供的示例表 - sakila 和..nothing!

已安装 MySQL 工作台。已安装 JDBC 驱动程序。

public class Version {

public static void main(String[] args) {

    Connection con = null;
    Statement st = null;
    ResultSet rs = null;

    //String url = "jdbc:mysql://127.0.0.1/sakila";
    String url = "jdbc:mysql://localhost:3306/sakila";
    String user = "root";
    String password = "root";

    try {

        Class.forName("com.mysql.jdbc.Driver").newInstance();

        con = DriverManager.getConnection(url, user, password);
        st = con.createStatement();
        rs = st.executeQuery("select * from ACTOR;");

        System.out.println("test");

        if (rs.next()) {
            System.out.println(rs.getString(1));
        }

    } catch (SQLException ex) {
        ex.printStackTrace();

    } finally {
        try {
            if (rs != null) {
                rs.close();
            }
            if (st != null) {
                st.close();
            }
            if (con != null) {
                con.close();
            }

        } catch (SQLException ex) {
            ex.printStackTrace();
        }
    }
}

}

【问题讨论】:

  • 它不会跳过try块,否则会打印错误。提示:添加更多 System.out.println(...) 以了解发生了什么。
  • 为什么你确定你没有连接到数据库?也许“测试”在结果集第一行的第一列?
  • 肯定会跳过 try 块,我在其中添加了一些“测试”字符串,因为它们没有被打印出来。
  • 你不能调试你的代码,看看它是怎么回事吗?
  • 仅在这些 catch 块中打印“错误”会剥夺您宝贵的调试信息。将那些 System.out.println("Error") 语句替换为 ex.printStackTrace() 并报告结果。

标签: java mysql database connection


【解决方案1】:

我认为你需要这条线:

Class.forName("org.mysql.Driver");

在调用 DriverManager.getConnection(...) 之前;

【讨论】:

  • 仅限 JDBC 4.0 之前的版本,如果是这种情况,它会抛出异常。
  • 感谢您的建议,但它并没有改变任何东西。
【解决方案2】:

您可能应该创建新的驱动程序实例。方法如下:

Class.forName("com.mysql.jdbc.Driver").newInstance();

【讨论】:

  • 仅限 JDBC 4.0 之前的版本,如果是这种情况,它会抛出异常。
  • @AleksandrKravets - OP 明确指出这不是结果。如果是这种情况,getConnection() 会抛出SQLException,他的代码会打印Error
  • 我现在只能假设提到“测试”消息是结果的第一个值。
【解决方案3】:

您需要确保设置了jdbc.drivers 属性。有多种方法可以做到这一点,

见the javadocs for DriverManager

【讨论】:

    【解决方案4】:

    很简单..您需要一个名为 mysql-connector-java-5.1.16-bin.jar 的 .jar 文件,下载它并将其添加到您的库中...

    祝你好运!!!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-01-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-26
      • 2016-09-30
      • 1970-01-01
      • 2012-10-09
      相关资源
      最近更新 更多