qq_浩然_9
2019-02-24 14:29
新增女神,除了id,user_name两个字段,其他的字段默认为null,但是新增女神的时候,只输入姓名,性别,年龄,邮箱,手机号,新增报错,create_user和update_user我也没有输入,也没有报错偏偏在isdel报错。
我给isdel的字段赋值后,新增成功了,也没有报错,请各位同学帮忙看下。
欢迎来到女神禁区:
下面是女神禁区的功能列表:
[MAIN/M]:主菜单
[QUERY/Q]:查看女神的全部信息
[GET/G]:查看某位女神的详细信息
[ADD/A]:添加女神信息
[UPDATE/U]:更新女神信息
[DELETE/D]:删除女神
[SEARCH/S]:查询女神信息(根据姓名,手机号来查询)
[EXIT/E]:退出女神禁区
[BREAK/B]:退出当前功能,返回主菜单
A
请说出女神的[姓名]
xioa
请输出女神的[性别]
1
请输出女神的[年龄]
21
请输出女神的[生日],格式为yyyy-MM-dd
1995-4-9
请输入女神的[邮箱]
123@qq.com
请输出女神的[手机号]
123123123
请输入女神的[是否删除]
2
新增女神成功
数据库的表创建语句
CREATE TABLE `imooc_goddess` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`user_name` varchar(30) NOT NULL,
`sex` int(11) DEFAULT NULL,
`age` int(11) DEFAULT NULL,
`birthday` date DEFAULT NULL,
`email` varchar(30) DEFAULT NULL,
`mobile` varchar(11) DEFAULT NULL,
`create_user` varchar(30) DEFAULT NULL,
`create_date` date DEFAULT NULL,
`update_user` varchar(30) DEFAULT NULL,
`update_date` date DEFAULT NULL,
`isdel` int(11) DEFAULT NULL,-----------这里默认为null啊
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
// 新增女神
public void addGoddess(Goddess g) throws Exception {
Connection conn = DBUtil.getConnection();
String sql = ""+
"insert into imooc_goddess"+
"(user_name,sex,age,birthday,email,mobile,create_user,"+
"create_date,update_user,update_date,isdel) values"+
"(?,?,?,?,?,?,?,current_date(),?,current_date(),?)";
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(1, g.getUser_name());
pstmt.setInt(2, g.getSex());
pstmt.setInt(3, g.getAge());
pstmt.setDate(4, new Date(g.getBirthday().getTime()));
pstmt.setString(5, g.getEmail());
pstmt.setString(6, g.getMobile());
pstmt.setString(7, g.getCreate_user());
pstmt.setString(8, g.getUpdate_user());
pstmt.setInt(9, g.getIsdel());----------------这个位置报错null
pstmt.execute();
}
这是后边我加上了 给isdel赋值
else if (OPERATION_ADD.equals(in) || OPERATION_ADD.substring(0, 1).equals(in)
|| OPERATION_ADD.equals(previous)) {
previous = OPERATION_ADD;
// 根据step的值来执行新增女神的第几步操作
if (1 == step) {
System.out.println("请说出女神的[姓名]");
} else if (2 == step) {
goddess.setUser_name(in);
System.out.println("请输出女神的[性别]");
} else if (3 == step) {
goddess.setSex(Integer.valueOf(in));
System.out.println("请输出女神的[年龄]");
} else if (4 == step) {
goddess.setAge(Integer.valueOf(in));
System.out.println("请输出女神的[生日],格式为yyyy-MM-dd");
} else if (5 == step) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
try {
Date birthday = sdf.parse(in);
goddess.setBirthday(birthday);
System.out.println("请输入女神的[邮箱]");
} catch (ParseException e) {
e.printStackTrace();
System.out.println("您输入的格式有误,请重新输入");
step = 3;// 需要减一次,下面会自增1
}
} else if (6 == step) {
goddess.setEmail(in);
System.out.println("请输出女神的[手机号]");
} else if (7 == step) {
goddess.setMobile(in);
System.out.println("请输入女神的[是否删除]");
} else if (8 == step) {
goddess.setIsdel(Integer.valueOf(in));
try {
action.add(goddess);
System.out.println("新增女神成功");
} catch (Exception e) {
e.printStackTrace();
System.out.println("新增女神失败");
}
}
}
if (OPERATION_ADD.equals(previous)) {
step++;
}
dao里调用了goddess的创建人更新人还有isdel,但是你在view里没有给它赋值啊,导致的空指针,要想解决,在Goddess.java里给这些属性赋值为null就行了,或者在view里添加通过scanner为这3个属性赋值。这个和数据库的语句没关系的,因为你的dao里的add方法里的那些?不会自动赋值的。
JDBC之 “ 对岸的女孩看过来”
99327 学习 · 866 问题
相似问题