@TOC
新手才开始学习web开发,数据库这个空指针已经困扰我很久了,请大家赐教
package com.zufe.Dao;
import java.sql.*;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import com.mysql.cj.xdevapi.Result;
public class Basedao {
static String dbUser = "root";
static String dbPass = "123456";
static String url = "jdbc:mysql://localhost:3306/zzwshop?useUnicode=true&characterEncoding=UTF-8";
static{
//加载驱动,本机mysql版本为8.0
try {
Class.forName("com.mysql.cj.jdbc.Driver");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
System.out.print("加载驱动失败");
e.printStackTrace();
}
}
public static Connection getconn(){
//创建一个链接对象
Connection conn = null;
try {
conn = DriverManager.getConnection(url,dbUser,dbPass);
return conn;
} catch (SQLException e) {
// TODO Auto-generated catch block
System.out.print("链接数据库失败");
e.printStackTrace();
}
return conn;
}
public static int exectuIUD(String sql, Object[] params){
int count = 0;
Connection conn = Basedao.getconn();
PreparedStatement ps = null;
try {
//这里有错误
ps = conn.prepareStatement(sql);
for(int i=0;i<params.length;i++){
ps.setObject(i+1, params[i]);
}
count = ps.executeUpdate();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
Basedao.closeall(null, ps, conn);
}
return count;
}
public static void closeall(ResultSet rs, PreparedStatement ps, Connection conn){
try {
if(rs!=null)
rs.close();
if(ps!=null)
ps.close();
if(conn!=null)
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
package com.zufe.service;
import com.zufe.Dao.Basedao;
import com.zufe.entity.ZZWshop_user;
public class ZZW_USERDao {
public static int insert(ZZWshop_user u){
String sql = "insert into ZZWshop_user values(?, ?, ?, ?, DATE_FORMAT(?, '%Y-%m-%d'), ?, ?, ?, ?, ?)";
Object[] params = {
u.getUSER_ID(),
u.getUSER_NAME(),
u.getUSER_PASSWORD(),
u.getUSER_SEX(),
u.getUSER_BIRTHDAY(),
u.getUSER_IDENITY(),
u.getUSER_EMAIL(),
u.getUSER_MOBILE(),
u.getUSER_ADDRESS(),
u.getUSER_STATUS()};
//这里报错
return Basedao.exectuIUD(sql, params);
}
}
package com.zufe.userservlet;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.zufe.entity.ZZWshop_user;
import com.zufe.service.ZZW_USERDao;
/**
* Servlet implementation class Register
*/
@WebServlet("/register")
public class Register extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=utf-8");
String username = request.getParameter("userName");
String name = request.getParameter("name");
String pwd = request.getParameter("passWord");
String sex = request.getParameter("sex");
String year = request.getParameter("birthday");
String email = request.getParameter("email");
String mobile = request.getParameter("mobile");
String address = request.getParameter("address");
ZZWshop_user u = new ZZWshop_user(username, name, pwd, sex, year, null, email, mobile, address, 1);
//加入数据库的用户表中
//这里错误
int count = ZZW_USERDao.insert(u);
//重定向
if(count>0){
response.sendRedirect("login.jsp");
}else{
PrintWriter out = response.getWriter();
out.write("<script>");
out.write("alert('注册失败')");
out.write("location.href='reg.jsp'");
out.write("<script>");
}
}
}
数据库在Navicat里面已经连接完毕,表也创建好了
=========分割线
问题已解决,楼主是将static String url = “jdbc:mysql://localhost:3306/zzwshop?&useSSL=false&serverTimezone=UTC”;
修改为//“jdbc:mysql://localhost:3306/zzwshop?useUnicode=true&characterEncoding=UTF-8”;
就解决了,不要问我为什么,我真的不知道,当时就破罐子破摔试一试,没想到成了。