Oolongtea879 2024-05-17 20:31 采纳率: 16.7%
浏览 0

Java(相关搜索:数据库)

总是提示empid 不能为空 我在网页也输入empid
在浏览器 中能看到 获取了 empid
methodName=empAdd&empid=wangwu&realname=%E7%8E%8B%E4%BA%94&idcard=1561651561&sex=&birthdate=2024-04-28&hiredate=2024-04-28&leavedate=2024-06-04&onduty=0&emptype=1&deptno=1&posid=5&phone=543453453&qq=534534&emercontactperson=
而且在数据库中empid为主键 默认就是notnull 总是解决不了这个问题求指点


Caused by: java.sql.SQLIntegrityConstraintViolationException: Column 'empid' cannot be null
    at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:115)
    at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:95)
    at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122)
    at com.mysql.cj.jdbc.ClientPreparedStatement.executeInternal(ClientPreparedStatement.java:960)
    at com.mysql.cj.jdbc.ClientPreparedStatement.execute(ClientPreparedStatement.java:388)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.apache.ibatis.logging.jdbc.PreparedStatementLogger.invoke(PreparedStatementLogger.java:59)
    at com.sun.proxy.$Proxy12.execute(Unknown Source)
    at org.apache.ibatis.executor.statement.PreparedStatementHandler.update(PreparedStatementHandler.java:47)
    at org.apache.ibatis.executor.statement.RoutingStatementHandler.update(RoutingStatementHandler.java:74)
    at org.apache.ibatis.executor.SimpleExecutor.doUpdate(SimpleExecutor.java:50)
    at org.apache.ibatis.executor.BaseExecutor.update(BaseExecutor.java:117)
    at org.apache.ibatis.executor.CachingExecutor.update(CachingExecutor.java:76)
    at org.apache.ibatis.session.defaults.DefaultSqlSession.update(DefaultSqlSession.java:197)


  • 写回答

2条回答 默认 最新

  • 阿里嘎多学长 2024-05-17 20:31
    关注

    以下内容由CHATGPT及阿里嘎多学长共同生成、有用望采纳:


    您想要解决的问题

    您遇到的问题是在使用Java进行数据库操作时,尽管在网页上已经输入了empid,但是在执行数据库插入操作时,仍然出现empid不能为空的错误提示。您希望找到解决这个问题的方法。

    问题出现原因

    1. 前端数据传递问题:尽管在浏览器中可以看到获取了empid,但可能在传递给后端Java代码的过程中出现了问题,导致empid为空。
    2. 后端处理逻辑问题:Java后端代码可能没有正确地接收或处理前端传递的empid值。
    3. 数据库约束问题:数据库中empid字段设置为主键且默认为NOT NULL,如果插入操作中empid为null,则会触发数据库的完整性约束,导致异常。

    问题解决方案

    1. 检查前端数据传递:确保前端传递的empid值正确无误地传递到后端。
    2. 检查后端接收逻辑:在Java后端代码中检查接收到的empid值是否为null,如果是,则需要进行相应的处理。
    3. 检查数据库操作代码:确保在执行插入操作时,empid字段被正确赋值。

    提供代码

    以下是一个简化的示例,展示如何在Java中检查empid并进行数据库操作:

    // 假设这是从前端接收到的参数
    String empid = "wangwu"; // 这里应该是从请求中获取的实际值
    
    // 检查empid是否为空
    if (empid == null || empid.trim().isEmpty()) {
        // 如果empid为空,进行错误处理,例如返回错误信息或抛出异常
        throw new IllegalArgumentException("Empid cannot be null or empty");
    }
    
    // 如果empid不为空,继续执行数据库操作
    // 以下是一个使用MyBatis的示例
    try (SqlSession session = sqlSessionFactory.openSession()) {
        EmployeeMapper mapper = session.getMapper(EmployeeMapper.class);
        // 假设employee是一个包含所有字段的实体对象
        Employee employee = new Employee();
        employee.setEmpid(empid);
        // ... 设置其他字段
        int rows = mapper.insert(employee);
        if (rows > 0) {
            // 插入成功
        } else {
            // 插入失败,处理错误情况
        }
        session.commit();
    }
    

    代码运行方式

    1. 确保您有一个运行中的MySQL数据库实例。
    2. 确保您的Java项目中包含了MyBatis及相关依赖。
    3. 将上述代码集成到您的Java项目中,并确保EmployeeMapperEmployee类已经正确配置和映射。
    4. 运行Java应用程序。

    代码预期运行结果

    如果empid不为空,并且数据库操作成功,那么您应该能够在数据库中看到新插入的记录。如果empid为空,那么将会抛出一个异常。

    推荐相关链接

    请根据您的具体情况调整上述代码和解决方案。如果您需要进一步的帮助,请提供更多的上下文信息。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 5月17日

悬赏问题

  • ¥15 两台交换机分别是trunk接口和access接口为何无法通信,通信过程是如何?
  • ¥15 C语言使用vscode编码错误
  • ¥15 用KSV5转成本时,如何不生成那笔中间凭证
  • ¥20 ensp怎么配置让PC1和PC2通讯上
  • ¥50 有没有适合匹配类似图中的运动规律的图像处理算法
  • ¥15 dnat基础问题,本机发出,别人返回的包,不能命中
  • ¥15 请各位帮我看看是哪里出了问题
  • ¥15 vs2019的js智能提示
  • ¥15 关于#开发语言#的问题:FDTD建模问题图中代码没有报错,但是模型却变透明了
  • ¥15 uniapp的h5项目写一个抽奖动画