当前位置:编程学习 > JAVA >>

为什么我在dao层测试通过,但在jsp中输入后无法连接数据库呢?

错误提示:java.sql.SQLException: No suitable driver found for jdbc:mysql://192.168.1.22:3306/action

dao层通过测试:
public class UserDao extends BaseDao {
public static void main(String[] args) {
UserDao userDao = new UserDao();
User user = new User();
userDao.addUser(user);
}
public boolean addUser(User user) {
Boolean resu = false;
String sql = "insert into tb_user(username,passwd,addr) values(?,?,?)";
getCon();
// 2、执行操作
int result = execUpdate(sql, new Object[] { user.getUserName(),
user.getPasswd(),user.getAddr()});
// 3、关闭
closeAll();
if (result > 0) {
resu = true;
}
return resu;

}
}

javabean:

package com.pojo;

public class User {
private int id;
private String userName;
private String passwd;
private String addr;

public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPasswd() {
return passwd;
}
public void setPasswd(String passwd) {
this.passwd = passwd;
}
public String getAddr() {
return addr;
}
public void setAddr(String addr) {
this.addr = addr;
}
}

配置文件:
#mysql
driver = com.mysql.jdbc.Driver
Dburl = jdbc\:mysql\://192.168.1.22\:3306/action
Dbname = root
Dbpassword = root

JSP:

<%@ page language="java" pageEncoding="UTF-8"%>
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%> 
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html"%>
 
<html> 
<head>
<title>JSP for UserForm form</title>
</head>
<body>
<html:form action="/user">
id : <html:text property="id"/><html:errors property="id"/><br/>
passwd : <html:password property="passwd"/><html:errors property="passwd"/><br/>
userName : <html:text property="userName"/><html:errors property="userName"/><br/>
addr : <html:text property="addr"/><html:errors property="addr"/><br/>
<html:submit/><html:cancel/>
</html:form>
</body>
</html>

最后的控制层,一到userDao.addUser(user);这句就出现错误提示:java.sql.SQLException: No suitable driver found for jdbc:mysql://192.168.1.22:3306/action,为什么会这样的,知道的请回一下吧,谢谢!!
/*
 * Generated by MyEclipse Struts
 * Template path: templates/java/JavaClass.vtl
 */
package com.eawen.struts.action;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

import com.dao.UserDao;
import com.eawen.form.UserForm;
import com.pojo.User;

public class UserAction extends Action {

public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
UserForm userForm = (UserForm) form;
UserDao userDao = new UserDao();
User user = new User();
user.setAddr(userForm.getAddr());
user.setPasswd(userForm.getPasswd());
user.setUserName(userForm.getUserName());
System.out.println(userForm.getAddr()+userForm.getPasswd()+userForm.getUserName());
boolean result = userDao.addUser(user);
return null;
}
}
--------------------编程问答-------------------- 你那个test测试的时候,user为空吧?
那样的话,估计不是因为测试通过,而是还没有执行到与数据库交互而报错那一步就已经停止运行了,而没有抛错操作。
jsp页面这个测试。有数据传过去。。所以就执行到了与数据库交互那一步。所以抛出了错误

当然只是猜测。。。

报错来看:
引用
jdbc\:mysql\://192.168.1.22\:3306/action
有错把。。怎么这个样子的url?

jdbc:mysql://192.168.1.22:3306/action 这样试试呢

--------------------编程问答--------------------
引用 1 楼 kouyisc 的回复:
你那个test测试的时候,user为空吧?
那样的话,估计不是因为测试通过,而是还没有执行到与数据库交互而报错那一步就已经停止运行了,而没有抛错操作。
jsp页面这个测试。有数据传过去。。所以就执行到了与数据库交互那一步。所以抛出了错误

当然只是猜测。。。

报错来看:
引用
jdbc\:mysql\://192.168.1.22\:3306/action
有错把。。怎么这个……

已经试过jdbc:mysql://192.168.1.22:3306/action也是不行的,刚把把数据库连接方式改为数据库连接池,一切问题都解决了,汗............为什么呀?我改过的只是一个BaseDao,和加了一个DBCPUtil和三个DBCP的包,应该不会是BaseDao错吧??如果BaseDao有错,UserDao应该不能通过测试呀!! --------------------编程问答-------------------- test为空也可以插入数据,id为自增长,插入的三个字段都是允许为空,数据看过已经是插入的了。 --------------------编程问答-------------------- --------------------编程问答--------------------
引用 2 楼 eawen911 的回复:
引用 1 楼 kouyisc 的回复:

你那个test测试的时候,user为空吧?
那样的话,估计不是因为测试通过,而是还没有执行到与数据库交互而报错那一步就已经停止运行了,而没有抛错操作。
jsp页面这个测试。有数据传过去。。所以就执行到了与数据库交互那一步。所以抛出了错误

当然只是猜测。。。

报错来看:
引用
jdbc\:mysql\://192.168.1.22\:……


这样的话,,难道是用数据库连接时,你的系统中没有放置mysql的jar包?或者版本不对。。。
看你的错误 ,明明是驱动的问题。。你不是排除了url的原因,而驱动字符串也没问题。。
所以还是得看你的环境。 --------------------编程问答-------------------- 貌似没导jar包  驱动错误 --------------------编程问答-------------------- 测试通过了你还得去数据库看看是不是真的添加进去了。。。 --------------------编程问答-------------------- 先确定URL写好, 再找JAR包问题, 是不是版本不对呀, 冲突了呀 --------------------编程问答-------------------- 在你的代码dao里面的执行步骤添加try catch看看有没有异常抛出来
补充:Java ,  Web 开发
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,