【已解决】eclipse无法连接上数据库,驱动已加载,mysql版本为8.0.16,报错空指针异常

@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”;
就解决了,不要问我为什么,我真的不知道,当时就破罐子破摔试一试,没想到成了。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值