寫了個注冊頁面到資料庫
一直出錯
空指標例外
java.lang.NullPointerException
production.jdbc.JDBCUtil.edit(JDBCUtil.java:28)
production.service.UserService.addUser(UserService.java:19)
production.UserServlet.register(UserServlet.java:62)
production.UserServlet.doGet(UserServlet.java:39)
production.UserServlet.doPost(UserServlet.java:48)
javax.servlet.http.HttpServlet.service(HttpServlet.java:650)
javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
package production.jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class JDBCUtil {
public static ResultSet queryForAll( String sql , Object[] objs){
Connection conn = getConnect();
ResultSet rs = null ;
try {
PreparedStatement psmt = conn.prepareStatement(sql);
for (int i = 0; i < objs.length; i++) {
psmt.setString(i+1, objs[i].toString());
}
rs = psmt.executeQuery();
} catch (SQLException e) {
System.out.println("執行sql陳述句時發生例外:錯誤碼" + e.getErrorCode() + "," + e.getMessage());
}
return rs;
}
public static int edit(String sql , Object[] params ){
Connection conn = getConnect();
int result = 0 ;
try {
PreparedStatement psmt = conn.prepareStatement(sql);
for (int i = 0; i < params.length; i++) {
psmt.setString(i+1, params[i].toString());
}
result = psmt.executeUpdate();
} catch (SQLException e) {
System.out.println("執行sql陳述句時發生例外:錯誤碼" + e.getErrorCode() + "," + e.getMessage());
}
return result ;
}
private static Connection getConnect() {
Connection conn = null;
try {
Class.forName("com.mysql.jdbc.Driver");
conn =DriverManager.getConnection("jdbc:mysql://localhost:3306/company"
+ "?characterEncoding=utf-8", "root", "password");
} catch (ClassNotFoundException e) {
System.out.println("加載資料庫驅動例外:" + e.getMessage());
} catch (SQLException e) {
System.out.println("獲取資料庫鏈接例外:" + e.getMessage());
}
return conn;
}
}
package production.service;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Set;
import production.Production;
import production.jdbc.JDBCUtil;
import production.User;
public class UserService {
public void addUser(User user) {
String sql = "insert into user (username, password , phone ,email ) " + " values ( ? , ? , ? , ?) ";
JDBCUtil.edit(sql, new Object[]{user.getUsername(),user.getPassword(), user.getPhone(),user.getEmail()});
}
public boolean checkUser(String username, String password) throws SQLException {
// TODO Auto-generated method stub
String sql = "select * from user where username = ? and password = ? " ;
ResultSet rs = JDBCUtil.queryForAll(sql, new Object[]{username , password} );
while(rs.next()){
return true;
}
return false;
}
public List<Production> queryUserList(Map hashMap) throws SQLException {
List<Production> userList = new ArrayList<>();
String sql = "select * from user where 1=1 ";
String whereSql = "";
Object[] params = new Object[hashMap.size()];
Set<Map.Entry<String, String>> entrySet = hashMap.entrySet();
int index = 0 ;
for (Map.Entry<String, String> entry : entrySet) {
whereSql += " and "+ entry.getKey() + " like ? " ;
params[index] = entry.getValue();
index++;
}
ResultSet rs = JDBCUtil.queryForAll(sql + whereSql, params);
while(rs.next()){
Production user = new Production();
user.setId(rs.getInt("id"));
user.setProname(rs.getString("proname"));
user.setUsername(rs.getString("username"));
user.setProyield(rs.getDouble("proyield"));
user.setEvaluate(rs.getString("evaluate"));
user.setChoose(rs.getString("choose"));
userList.add(user);
}
return userList;
}
}
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import production.User;
import production.service.UserService;
/**
* Servlet implementation class UserServlet
*/
@WebServlet("/UserServlet")
public class UserServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public UserServlet() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
request.setCharacterEncoding("utf-8");
String act = request.getParameter("act");
if("register".equals(act)){
register(request,response);
}
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
private void register(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String username = request.getParameter("username");
String password = request.getParameter("password");
String phone = request.getParameter("phone");
String email = request.getParameter("email");
System.out.println("用戶名:" + username);
System.out.println("密碼:" + password);
System.out.println("電話:" + phone);
System.out.println("郵箱:" + email);
//向資料庫中添加資料
User user = new User(username , password , phone , email );
UserService service = new UserService();
service.addUser(user);
request.setAttribute("msg", "注冊成功");
RequestDispatcher rd = request.getRequestDispatcher("html/login.jsp");
rd.forward(request, response);
}
}
uj5u.com熱心網友回復:
debugger看看uj5u.com熱心網友回復:
獲取資料庫鏈接例外這是什么問題
uj5u.com熱心網友回復:
看你的驅動加載程式
Class.forName("com.mysql.jdbc.Driver");
conn =DriverManager.getConnection("jdbc:mysql://localhost:3306/company"
+ "?characterEncoding=utf-8", "root", "password");
你這加載驅動是mysql5.0的版本,mysql8.0的話,先確認一下mysql的版本吧
Class.forName("com.mysql.cj.jdbc.Driver");
conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/test_demo?useSSL=false&serverTimezone=UTC","root","password");
uj5u.com熱心網友回復:
System.out.println("用戶名:" + username);System.out.println("密碼:" + password);
System.out.println("電話:" + phone);
System.out.println("郵箱:" + email);
你這幾個列印出來都有值?
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/88898.html
標籤:Java SE
上一篇:mybatis 自定義攔截器是否可以獲得自定義的注解
下一篇:學習第31天
