jsp连接mysql数据库时,在代码中出现com.mysql cannot be resolved to a type

oibook13 2008-03-21 08:02:36
我首先新建了一个项目,在这个项目中新建一个jsp,然后意图连接已有的mysql数据库中的数据,读数据出来。所以我下了mysql的jdbc驱动mysql-connector-java-3.1.7-bin.jar,并按网上所说放在%java_home%\jre\lib\ext下但是在eclipse下写完代码的时候出现一个错误,如下

是不是我导入得不对?最好能解释下为什么会出现这个错误
...全文
1369 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
Nice_Time00 2012-08-15
  • 打赏
  • 举报
回复
我也遇到了这个问题,谢谢了
jasonlee529 2011-11-22
  • 打赏
  • 举报
回复
build path 发现提示是com.mysql.jdbc.Driver ClassNotFound。把mysql-connector-java.jar放入/WEB-INF/lib下之后发现没有异常。不知道为什么,好像web应用下得自定义类库都要放到/WEB-INF/lib目录下。
isaltfish 2010-07-02
  • 打赏
  • 举报
回复
为什么看不见回复呢
smufvgwy 2008-11-28
  • 打赏
  • 举报
回复
大家说这么,其实就是找不到com.mysql.jdbc.Driver(),故而只要把驱动的jar包放在web服务器的lib目录中,如把mysql-connector-java-5.0.5-bin.jar放在C:\Tomcat 6.0\lib中,或者是在你的web工程目录的WEB-INF\lib下把mysql-connector-java-5.0.5-bin.jar包引入就可以了。。。
oibook13 2008-03-23
  • 打赏
  • 举报
回复
我在连接mysql时 dbUrl = "jdbc:mysql://localhost:3306/BookDB?useUnicode=true&characterEncoding=GBK"

但这样显示的也还是乱码
oibook13 2008-03-23
  • 打赏
  • 举报
回复
谢谢6楼 但重申一点密码对的但出错进不了,我本该把捕获的错误贴出来的,但我昨晚一着急把mysql重装了,这个问题解决的同时也使得没办法再获取其错误了

现在我面临的新的问题是:我装mysql后配置时默认的数据库编码时选了latin1,而我在数据库中建表用的是中文,我试图在jsp中读取数据库是中文显示不出来,出现的大多是??,我查过书,说是数据库编码和操作系统编码不匹配的问题,我于是在mysql中的my.ini将default-character set 改为gbk 但没有解决问题,能告诉我为什么吗?
oibook13 2008-03-23
  • 打赏
  • 举报
回复
找到同志了,但同时我也找到了方法

首先,问题出在mysql的编码方式是ISO-8859-1,也是latin1编码,虽然在数据库是看到中文但输出出来的时候还是以latin1的编码,解决的方法如下:连接时我仍然用"jdbc:mysql://localhost:3306/BookDB?useUnicode=true&characterEncoding=GB2312"

然后
rs = stmt.executeQuery("SELECT id,name,title,price from books");
String col1 = rs.getString(1);
String col2 = rs.getString(2);
String col3 = rs.getString(3);

col1=new String(col1.getBytes("ISO-8859-1"),"GB2312");
col2=new String(col2.getBytes("ISO-8859-1"),"GB2312");
col3=new String(col3.getBytes("ISO-8859-1"),"GB2312");
out.println("<tr><td>"+col1+"</td><td>"+col2+"</td><td>"+col3+"</td><td>"+col4+"</td><td>");

看,在输出前重新构造了字符串col1以GB2312的编码方式,就能输出中文字了
不过我不是很透彻理解字符在mysql和jsp中输入输出的原理,如果有人能讲一下就太好了。
shuo651197769 2008-03-22
  • 打赏
  • 举报
回复
密码不对?把getMessage()捕获的错误贴出来看看把
class.forName是java.lang下面的一个类,forName是它的静态方法。Class.forName("String"),String假设是类名,这条语句的意思就是创建一个String这个类的对象,返回该对象的引用 ,如果该类找不到就抛出ClassNotFoundException,就像mysql的包没导进去时的错误
oibook13 2008-03-22
  • 打赏
  • 举报
回复
谢谢 引入驱动jar后 那个问题解决了 但新的问题出现在我打开http://localhost:8080/Mysql/mysql.jsp但出现一大堆异常,用getMessage()捕获然后输出 大意是连接mysql时被拒绝,所以我又在mysql的bin里打开(dos下)mysql.exe但输入用户和密码后出现error 2003 (HY000):can't connect to mysql server on 'localhost' (10061)
为什么会出现这个提示,怎样解决,另外再重复问一个问题 class.forName()是mysql-connector-java.jar中的class类的静态函数forName()吗 谢谢
shuo651197769 2008-03-21
  • 打赏
  • 举报
回复
你邮件单击工程,选Build Path ,然后把mysql的连接包到进去试试应该可以
mysql-connector-java的版本好像也有关系。。。下个新的试试
oibook13 2008-03-21
  • 打赏
  • 举报
回复
出错的是java.sql.DriverManager.registerDriver(new com.mysql.jdbc.Driver());
中的com.mysql部分出错提示com.mysql cannot be resolved to a type
oibook13 2008-03-21
  • 打赏
  • 举报
回复
我刚玩,不懂怎样导入自定义类库,导入什么类库,能详细说明吗,出错的代码如下:
Connection con;
Statement stmt;
ResultSet rs;

Class.forName("com.mysql.jdbc.Driver");
java.sql.DriverManager.registerDriver(new com.mysql.jdbc.Driver());

顺便问问Class.forName是哪个类的函数,是静态函数对吧
老紫竹 2008-03-21
  • 打赏
  • 举报
回复
需要在Eclipse 里面导入自定义的类库

58,454

社区成员

发帖
与我相关
我的任务
社区描述
Java Eclipse
社区管理员
  • Eclipse
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧