设置的参数与传递参数不一致
问题描述
经过检查这里的方法并没有出现错误
public boolean insertUser(Connection connection, User user) {
String sql = "insert into users (UID, sex, uname, password,age,level) VALUES (?,?,?,?,?,?)";
PreparedStatement preparedStatement = null;
try {
preparedStatement = connection.prepareStatement(sql);
preparedStatement.setString(1, getUUID());
preparedStatement.setString(2, user.getSex());
preparedStatement.setString(3, user.getUname());
preparedStatement.setString(4, user.getPassword());
preparedStatement.setInt(5, user.getAge());
preparedStatement.setInt(6, user.getLevel());
System.out.println(user.getAge());
System.out.println(user.getUID());
preparedStatement.executeUpdate();
} catch (SQLException e) {
System.out.println("用户添加失败!");
e.printStackTrace();
return false;
} finally {
ConnectionUtil.release(connection, preparedStatement, null);
}
return true;
}
但是从这里开始调用的时候就会报空指针异常
public boolean insertUser(User user) {
User user1 = userDao.selectUserByuName(ConnectionUtil.getConnection(), user.getUname());
System.out.println(user1);
if (user1 == null) {
System.out.println(123);
boolean isTrue = userDao.insertUser(ConnectionUtil.getConnection(), user);
if (isTrue) {
System.out.println("用户添加成功!");
return true;
}
} else {
System.out.println("该用户已存在!");
}
return false;
}
解决办法
经过处理发现传递的参数不一致
在这里User
只传递四个参数
public static void main(String[] args) {
UserServiceImpl userService=new UserServiceImpl();
userService.insertUser(new User(getUUID(),"Mei","yzqwert123","女"));
}
在这里却用User
调用了六个参数,会使User
对象指向空
public boolean insertUser(Connection connection, User user) {
String sql = "insert into users (UID, sex, uname, password,age,level) VALUES (?,?,?,?,?,?)";
PreparedStatement preparedStatement = null;
try {
preparedStatement = connection.prepareStatement(sql);
preparedStatement.setString(1, getUUID());
preparedStatement.setString(2, user.getSex());
preparedStatement.setString(3, user.getUname());
preparedStatement.setString(4, user.getPassword());
preparedStatement.setInt(5, user.getAge());
preparedStatement.setInt(6, user.getLevel());
System.out.println(user.getAge());
System.out.println(user.getUID());
preparedStatement.executeUpdate();
} catch (SQLException e) {
System.out.println("用户添加失败!");
e.printStackTrace();
return false;
} finally {
ConnectionUtil.release(connection, preparedStatement, null);
}
return true;
}
修改参数个数即可
userService.insertUser(new User(getUUID(),"Mei","yzqwert123","女",12,45));