【问题标题】:problem using JDBC to connect to mysql使用JDBC连接mysql的问题
【发布时间】:2011-06-11 21:21:20
【问题描述】:

我正在尝试使用 jdbc 在我的小程序和我的 mysql 服务器之间建立连接

我在项目中添加了jar mysql-connector-java-5.1.14-bin.jar

然后我使用了这个代码

public void databaseTesting(){
        Connection con;
        try {
            Class.forName("com.mysql.jdbc.Driver").newInstance();

            con = DriverManager.getConnection( "jdbc:mysql://localhost:3306/test", "root","");
            System.err.println("connected !");

            Statement stmt = con.createStatement();
            ResultSet rs = stmt.executeQuery("SELECT * FROM `test`.`test`;");
            while (rs.next()) {
                int A = rs.getInt("columnA");
                int B = rs.getInt("columnB");
                System.err.println("A "+A+" B "+B);
            }
        } catch (SQLException e) {
            System.err.println("failed to connect");
        } catch (InstantiationException e) {
            System.err.println("InstantiationException");
        } catch (IllegalAccessException e) {
            System.err.println("IllegalAccessException");
        } catch (ClassNotFoundException e) {
            System.err.println("ClassNotFoundException");
        }
    }

由于某种原因,我不断收到 ClassNotFoundException。


编辑

jar 被添加到构建路径并出现在引用的库中。

异常是由

引发的

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

有人知道为什么吗?

提前谢谢杰森

【问题讨论】:

  • “将jar mysql-connector-java-5.1.14-bin.jar 添加到项目中”是什么意思?您是将 JAR 添加到类路径中还是只是将其放入项目中?
  • 您还需要添加异常堆栈跟踪。哪个类没有找到?
  • @faith:给定 try 块中的代码,这可能只是一个可能的缺失类。其他人(即在编译时出现的那些)宁愿在运行时生成NoClassDefFoundError,如果它真的丢失了。
  • 已经将 jar 添加到构建路径中。异常由 Class.forName("com.mysql.jdbc.Driver").newInstance();
  • 感谢您的帮助,问题是我没有将jar放在WEB-INF/lib文件夹中。

标签: java mysql jdbc


【解决方案1】:

您的代码没问题!它会在以下情况下起作用:

  1. 您的 mysql-connector-java-5*-bin.jar 已就位。
  2. 登录名和密码正确。
  3. 您的数据库存在
  4. 您的表存在
  5. 你的 ColumnA 和 ColumnB 是整数

    如果您使用的是 IDE,只需将 jar 添加到库中即可。

【讨论】:

    【解决方案2】:

    那么 JAR 不在运行时类路径中。

    由于您明确提到了“项目”,我假设您使用的是 IDE。您必须将 JAR 文件添加到所谓的 Build Path(它代表编译时和运行时类路径)。例如,在 Eclipse 中,右键单击您放在项目文件夹中的 JAR 文件,选择 Build Path > Add to Build Path 就可以了。

    另见:


    更新:如果它一直在抱怨,那么它仍然不在运行时类路径中。要么你做错了,要么运行时环境没有使用这个 JAR。您是作为 Java 应用程序还是作为 Java Applet 运行它的? (即使在小程序中执行 JDBC 是一种不好的做法)。如果您实际上将其作为小程序运行,它也必须位于小程序的运行时类路径中。可以在小程序的archive属性/参数中指定。

    【讨论】:

      【解决方案3】:

      您是否通过 Eclipse 运行此应用程序?是动态网页项目吗,如果是的话试试把jar文件加到WEB-INF\lib文件夹里

      【讨论】:

      • 我给你一个绿色标记,因为它有效地解决了我遇到的问题,我在阅读的关于 WEB-INF/lib 的教程中没有找到任何提及
      • 您也没有提到您在作为运行时环境的 servlet 容器中运行这段代码。对于未来的问题,提及实际使用的运行时环境非常重要。 /WEB-INF/lib 作为 3rd 方 JAR 的容器,这些 JAR 将成为运行时环境的一部分,但是在普通的 JSP/Servlet 教程中已经足够提及了。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-29
      • 1970-01-01
      • 2010-10-03
      • 2023-03-27
      • 2011-05-28
      相关资源
      最近更新 更多