用java连接MySQL出现错误:java.lang.ClassNotFoundException: com.mysql.jdbc.Driver

我请讲解下,用java连接MySQL出现错误:java.lang.ClassNotFoundException: com.mysql.jdbc.Driver?

我在网上找到的代码
import java.sql.*;
public class JDBCTest {
public static void main(String[] args){

//驱动程序名
String driver = "com.mysql.jdbc.Driver";
// URL指向要访问的数据库名scutcs
String url = "jdbc:mysql://127.0.0.1:3306/scutcs";
// MySQL配置时的用户名
String user = "root";
// Java连接MySQL配置时的密码
String password = "root";
try {

// 加载驱动程序
Class.forName(driver);

// 连续数据库
Connection conn = DriverManager.getConnection(url, user, password);

if(!conn.isClosed())
System.out.println("Succeeded connecting to the Database!");

// statement用来执行SQL语句
Statement statement = conn.createStatement();

// 要执行的SQL语句
String sql = "select * from tbmakerdata";
String InsertData = "insert into tbmakerdata(Name,Type,Lat,Lng) values ('0102123','myIconW','39.1087','117.1771');";

//结果集
//statement.executeUpdate(InsertData);
ResultSet rs = statement.executeQuery(sql);
System.out.println("-----------------");
System.out.println("执行结果如下所示:");
System.out.println("-----------------");
System.out.println("图标类型" + "\t" + "名称" +"\t" +"经纬度");
System.out.println("-----------------");
String name = null;
while(rs.next()) {
//选择sname这列数据
name = rs.getString("Name");
// 首先使用ISO-8859-1字符集将name解码为字节序列并将结果存储新的字节数组中。
// 然后使用GB2312字符集解码指定的字节数组
//name = new String(name.getBytes("ISO-8859-1"),"GB2312");
// 输出结果
System.out.println(rs.getString("Type") + "\t" + name + "\t" + rs.getString("Lat") + "\t" + rs.getString("Lng"));
}
rs.close();
conn.close();
} catch(ClassNotFoundException e) {
System.out.println("Sorry,can`t find the Driver!");
e.printStackTrace();
} catch(SQLException e) {
e.printStackTrace();
} catch(Exception e) {
e.printStackTrace();
}

}
}

用这个代码新建一个项目就可以正常运行并连接数据库。
当我将它写入另一个项目的一个方法时就报错java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
我这个类里也导入了java.sql.*,而且com.mysql.jdbc.Driver的路径也和上一个项目的路径相同。
求大神帮我分析分析是哪里出的错误啊?急死了
最新回答
语物忉灼秋

2024-05-01 20:10:59

个人觉得如果你单独成一个项目能运行的话,换成一个方法也是没有问题的,楼上的那些方法肯定都不是出错的地方,因为如果没有导入包的话你这个程序都不可能运行的。但是现在出现了问题,这其中一种最优可能的原因是你擅自把在这个函数中的某些个变量比如Driver定义在了函数访问不到的地方,比如
主函数
中,这就有可能导致出错。其实你应该把出问题的那个项目贴出来,大家才能帮得到你。不然你让大家一顿猜,很难找到真正出错的原因。
追问
你说的非常有道理!!下面是我出问题的那个类,我在其他类中调用的这个类的toDataBase()方法
package com.ibm.googlemap;
import java.sql.*;
public class DataBaseMarker {
public static void toDataBase(){
String driver = "com.mysql.jdbc.Driver";
。。。。。
后面的内容与上面的那个撑血完全一样了,字符有限粘不全了
追答
这!!如果是这样子的话,真是bug了。我运行了你的函数,也把它写成了方法体在另一个函数中调用,可是悲剧我是没有出错的,不然应该能找出原因的。惭愧,不知道你那儿是怎么回事了……
追问
还是谢啦!
七落海屿

2024-05-01 08:00:14

楼主,一楼说的可能有点不对,如果你只是要运行这段代码的话,不需要Tomcat(具体是什么你可以去网上查查)。运行这段代码(根据代码的内容来看)的前提是你的电脑上有mysql,并且你在mysql中拥有名为scutcs的database(数据库),在这个databse中拥有名为tbmakerdata的表(table),并且在表中有Name,Type,Lat,Lng这些字段并且有一些值。之后在你的classpath中有java连接mysql的驱动包(mysql-connector-java-5.1.7-bin.jar 你可以去mysql的官网上下载,不一定是5.1.7),在上面的都齐全的之后,你可以运行这段代码,可以再控制台看到结果。如果你用的是eclipse这样的ide工具的话,操作上会简单一点。
追问
谢谢啊,是这样的,我用的eclipse,在另外一个项目中用这段代码是可以连数据库的。只是我现在把这个main方法写为另外一个类中的方法。再在其他类中调用该方法就连不上,为了保险我每个类都import java.sql.*。
我的classpath中也有
这是怎么回事呢?明明在另一个项目中可以正常连接的,但是一到另一个程序就不行了
追答
如果报错还是com.mysql.jdbc.Driver找不到的话,就是驱动包(mysql-connector-java-5.1.6-bin.jar)不在你想运行的程序的项目的classpath下,真想不到别的原因了。
静若幽兰

2024-05-01 03:12:17

是tomcat找不到MYSQL JAR包的问题。后来又把mysql-connector-java-5.1.7-bin.jar导入到tomcat的lib目录下面就ok了,嘿……

在java项目中,只需要引入mysql-connector-java-5.1.7-bin.jar就可以运行java项目。

在web项目中,当Class.forName("om.mysql.jdbc.Driver");时myeclipse是不会去查找字符串,不会去查找驱动的。所以只需要把mysql-connector-java-5.1.7-bin.jar拷贝到tomcat下lib目录就可以了。
追问
我没有用过tomcat啊?这个tomcat是个什么东西?还有怎么“把mysql-connector-java-5.1.7-bin.jar拷贝到tomcat下lib目录”?
追答
tomcat  是用来启动和管理web项目
那你String url = "jdbc:mysql://127.0.0.1:3306/scutcs";
配对没有?
梦的河流

2024-05-01 16:58:28

百度jar包下载下来后,如果你是WEB工程就把jar包复制到webRoot/WEB-INF/lib下,如果你是java工程建一个文件夹lib把刚刚jar包放入,然后选中jar包点击右键选择Build Path 就可以了。
顾清颜

2024-05-01 18:18:05

缺少驱动。去mysql目录里找jar包。把jar包导入到web项目的lib下就可以了。
追问
是去mysql的安装目录里找jar包吗?我找不到啊,能不能说的具体点?谢谢啊