无悔zz 2017-06-04 13:13 采纳率: 33.3%
浏览 913

学生成绩管理系统添加班级模块错误,下面是数据库的操作代码和控制台的代码,还有错误提示,求帮忙

//添加班级
public void addClass(int pid,String className) {
String sql="insert into class (pid,classname) values(?,?)";
Connection connection=null;
PreparedStatement p=null;
try {
connection=DbUtil.getConnection();
//手动提交事务
connection.setAutoCommit(false);
p=(PreparedStatement) connection.prepareStatement(sql);
p.setInt(1, pid);
p.setString(2, className);
p.executeUpdate();
//获取当前班级的父班级
Classes parentClass=findClassById(pid);
//如果父班级为叶子
if (parentClass.getLeaf()==1) {
modLeaf(connection, parentClass.getClassId(), 0);
}
//提交事务
connection.commit();
} catch (Exception e) {
e.printStackTrace();
if (connection!=null) {
try {
connection.rollback();
} catch (Exception e1) {
e1.printStackTrace();
}
}
} finally {
DbUtil.colse(p);
//恢复成自动提交
DbUtil.setAutoCommit(connection, true);
DbUtil.colse(connection);
}
}
/**
修改叶子值如果为叶子
@throws SQLException */

private void modLeaf(Connection connection,int classId,int leaf) throws SQLException{
String sql="update class set leaf=? where classid=?";
PreparedStatement p=null;

try {
p=(PreparedStatement) connection.prepareStatement(sql);
p.setInt(1, leaf);
p.setInt(2, classId);
p.executeUpdate();
} finally {
DbUtil.colse(p);
}
}

//根据ID查找班级
查询父班级是否为叶子
如果存在返回班级,不存在返回空

public Classes findClassById(int classId) {

String sql="select *form class where classid=?" ;

Connection connection=null;
PreparedStatement p=null;
ResultSet rs=null;
Classes classes=null;
try {
connection=DbUtil.getConnection();
p=(PreparedStatement) connection.prepareStatement(sql);
rs=(ResultSet) p.executeQuery();
if(rs.next()) {
classes=new Classes();
classes.setClassId(classId);
classes.setClassName(rs.getString("classname"));
classes.setPid(rs.getInt("pid"));
classes.setLeaf(rs.getInt("leaf"));
}
} catch (Exception e) {
e.printStackTrace();
} finally {
DbUtil.colse(rs);
DbUtil.colse(p);
DbUtil.colse(connection);
}
return classes;
}
}

控制台代码,应该没错,s为输出的添加信息
int pid=Integer.parseInt(s.substring(s.indexOf("=")+1, s.indexOf(",")));
String className=s.substring(s.lastIndexOf("=")+1, s.length());
ClassManage.getInstance().addClass(pid, className);
错误信息:
1-添加班级
2-删除班级
3-修改班级
4-查询班级
q-退出
1
请输入添加的班级名(classname=#):
pid=3,classname=一年一班_01

java.sql.SQLException: Field 'leaf' doesn't have a default value
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:946)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2985)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1631)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1723)
at com.mysql.jdbc.Connection.execSQL(Connection.java:3256)
at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1313)
at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1585)
at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1500)
at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1485)
at com.coursemanage.lsq.ClassManage.addClass(ClassManage.java:67)
at com.coursecontroller.lsq.ClassController.main(ClassController.java:47)

  • 写回答

1条回答

  • threenewbee 2017-06-04 18:30
    关注

    Field 'leaf' doesn't have a default value
    字段leaf没有默认值,你尝试插入数据库,这个字段没有给值,而它不能为空。

    评论

报告相同问题?

悬赏问题

  • ¥15 用visual studi code完成html页面
  • ¥15 聚类分析或者python进行数据分析
  • ¥15 逻辑谓词和消解原理的运用
  • ¥15 三菱伺服电机按启动按钮有使能但不动作
  • ¥15 js,页面2返回页面1时定位进入的设备
  • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?