运行jdbc时出错

Posted

技术标签:

【中文标题】运行jdbc时出错【英文标题】:Error while running jdbc 【发布时间】:2016-06-10 16:09:55 【问题描述】:

接下来的步骤

mysql工作台安装

Connector-J下载并解压到程序文件中的Mysql文件夹中 已复制

import java.sql.*;
public class FirstExample 
// JDBC driver name and database URL
static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";  
static final String DB_URL = "jdbc:mysql://localhost/EMP";

 //  Database credentials
static final String USER = "username";
static final String PASS = "password";

public static void main(String[] args) 
Connection conn = null;
Statement stmt = null;
try
   //STEP 2: Register JDBC driver
   Class.forName("com.mysql.jdbc.Driver");

   //STEP 3: Open a connection
   System.out.println("Connecting to database...");
   conn = DriverManager.getConnection(DB_URL,USER,PASS);

   //STEP 4: Execute a query
   System.out.println("Creating statement...");
   stmt = conn.createStatement();
   String sql;
   sql = "SELECT id, first, last, age FROM Employees";
   ResultSet rs = stmt.executeQuery(sql);

   //STEP 5: Extract data from result set
   while(rs.next())
      //Retrieve by column name
      int id  = rs.getInt("id");
      int age = rs.getInt("age");
      String first = rs.getString("first");
      String last = rs.getString("last");

      //Display values
      System.out.print("ID: " + id);
      System.out.print(", Age: " + age);
      System.out.print(", First: " + first);
      System.out.println(", Last: " + last);
   
       //STEP 6: Clean-up environment
   rs.close();
   stmt.close();
   conn.close();
catch(SQLException se)
   //Handle errors for JDBC
   se.printStackTrace();
catch(Exception e)
   //Handle errors for Class.forName
   e.printStackTrace();
finally
   //finally block used to close resources
        try
      if(stmt!=null)
         stmt.close();
   catch(SQLException se2)
   // nothing we can do
   try
      if(conn!=null)
         conn.close();
   catch(SQLException se)
      se.printStackTrace();
   //end finally try
//end try
     System.out.println("Goodbye!");
  //end main
  //end FirstExample

此代码在 Eclipse 中新建项目。 当我运行它时,我发生了这个错误

java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
at FirstExample.main(FirstExample.java:17)
  Goodbye! 

然后尝试了这个cmd命令

set classpath=C:\Program Files\MySQL\mysql-connector-java-3.1.14\mysql-   
 connector-java-3.1.14\mysql-connector-java-3.1.14-bin.jar;

还是同样的错误 怎么办,请给出一些解释以及您有价值的解决方案 谢谢

【问题讨论】:

【参考方案1】:

pom.xml 中添加以下依赖项

<!-- http://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.6</version>
</dependency>

如果您不使用 maven,则将此 jar com.mysql.jdbc_5.1.5.jar 添加到您的 eclipse build path rightclick on project--&gt; build path--&gt;configure build path--&gt;libraries--&gt;add external jar

【讨论】:

@arunkumar 很高兴听到这个消息。【参考方案2】:

您必须将 JDBC 连接器 jar 文件复制到项目的库文件夹中

或在服务器的库文件夹中

两者都可以正常工作...

运行时变量不是从这两个位置获取的

【讨论】:

如果您仍然不知道该做什么,请回复我这些详细信息。 1.您使用哪个工具进行开发。(编辑器,例如eclipse或netbeans)。 2. 您使用的是哪个服务器(例如 tomcat 或 Glassfish)。 复制了单个jar文件mysql server 5.7/lib文件夹。发生同样的错误。我必须设置路径还是什么 no no not not in sql server's lib 而是将其复制到项目 lib 或 Server(WebServer/Apache) lib eclipse, Tomcat - 但不是连接到 mysql 的问题,谢谢老兄 对于 Tomcat lib,转到 C:\Program Files\Apache Software Foundation\Tomcat 7.0\lib 并在此处复制 jar,【参考方案3】:

您的类路径包含一个空格,因此 java.exe 将无法正确选择它。 使用插入符号 ^ 转义空格:

set classpath=C:\Program^ Files\MySQL\mysql-connector-java-3.1.14\mysql-connector-java-3.1.14\mysql-connector-java-3.1.14-bin.jar;

(并仔细检查路径是否正确!)。

【讨论】:

谢谢,我累了,同样的错误再次指向 ClassNotFoundException。并且路径也是正确的。 @wero 亲爱的@wero,为什么将异常指向Class.forName("com.mysql.jdbc.Driver"); @Arunkumar 因为这条线失败了。 Java 尝试加载类 com.mysql.jdbc.Driver,但在类路径中找不到它 - 因为不知何故 mysql-connector-java-3.1.14-bin.jar 不是类路径的一部分 谢谢!很有帮助

以上是关于运行jdbc时出错的主要内容,如果未能解决你的问题,请参考以下文章

通过 jdbc 通过准备好的语句传递 SQL 命令时出错

将 R 连接到 Redshift 时出错

在 Spring Boot 2、Hibernate、PostgreSQL 中通过 JDBC 语句执行 DDL 时出错

使用 JDBC 准备语句插入时出错

JDBC 代码调用返回值的存储函数时出错

使用 JDBC “java.lang.NullPointerException”时出错 [重复]