运行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--> build path-->configure build path-->libraries-->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时出错的主要内容,如果未能解决你的问题,请参考以下文章