已经困扰我一个下午了 废话不多说 代码奉上
下面是userbean
package web;
import jdbc.DBBean;
public class user {
private int id;
private String name;
private String pwd;
public String getName()
{return name;
}
public void setName(String name) {
this.name = name;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
public int addUser() {
int r;
//实例化DBBean
DBBean db= new DBBean();
//设置sql语句和参数
String sql="insert into user_table(name,pwd) values(?,?)";
String[] params = new String[] {this.name, this.pwd};
//调用dbbean中的更新数据库操作sqlupdate()
r=db.sqlupdate(sql ,params);
//关闭数据库
db.getClose();
return r;
}
}
下面是DBBean
public class DBBean {
private String url;
private String username;
private String pwd;
private Connection conn;
private PreparedStatement pstmt;
public void getConnection() {
url = "jdbc:mysql://localhost:3306/mydb01?serverTimezone=GMT";// 链接数据库的地址
username = "root";// 连接数据库的用户名
pwd = "root";// 链接数据库的密码
try {
// 加载驱动类通过名字
Class.forName("com.mysql.jdbc.Driver");
// 通过驱动类链接对象
conn = DriverManager.getConnection(url, username, pwd);
System.out.println("success");
} catch (Exception e) {
e.printStackTrace();
}
}
public int sqlupdate(String sql, String[] params) {
int r = 0;
getConnection();
try {
pstmt = conn.prepareStatement(sql, params);
if (params != null) {
for (int i = 0; i < params.length; i++) {
pstmt.setString(i + 1, params[i]);
}
}
// 执行更新数据库的操作
r = pstmt.executeUpdate();
} catch (Exception e) {
// TODO: handle exception
}
return r;
}
}
下面是register的jsp 用于处理register.html的表单提交的数据
问题就在这里了
在实际测试中发现p.addUser()返回值是0
说明我输入的用户名和密码没有被写入数据库
我在数据库中看了username还有pwd确实初始化成功了但是值都是null
那么究竟是哪里出了问题呢?
<body>
<jsp:useBean id="p" class="web.user" ></jsp:useBean>
<jsp:setProperty property="name" name="p"/>
<jsp:setProperty property="pwd" name="p"/>
<%
if(p.addUser()==1){
request.getRequestDispatcher("main.jsp").forward(request, response);
}
else{
out.print(p.addUser());}
%>
</body>
对了,console页面的一句话没听懂 是驱动版本的问题???
Loading class com.mysql.jdbc.Driver'. This is deprecated. The new driver class is
com.mysql.cj.jdbc.Driver’. The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary.