开发者社区> 问答> 正文

向mysql数据库中插入数据时报错的问题

下面是我的代码

public class categorydao {
    public static void save(category c) throws SQLException{
        Connection conn=(Connection) DB.getConnection();
        String sql=null;
        if(c.getId()==-1){
            sql="insert into category values(null,?,?,?,?,?)";  
        }else{
          sql="insert into category values("+c.getId()+",?,?,?,?,?)";
          } 
        PreparedStatement ps=conn.prepareStatement(sql);
        try {
            ps.setString(1,c.getName() );
            ps.setString(2,c.getDescr());
            ps.setInt(3, c.getPid());
            ps.setInt(4, c.isIsleaf()?0:1);
            ps.setInt(5, c.getGrade());
            ps.executeUpdate();

        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }finally{
            DB.free(null, ps, conn);
        }

    }

错误如下:
com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Duplicate entry '1' for key 'PRIMARY'
请大神帮我看看,哪里有问题

展开
收起
落地花开啦 2016-02-05 09:14:25 4237 0
3 条回答
写回答
取消 提交回答
  • 主键冲突了, 换个主键

    2019-07-17 18:37:37
    赞同 展开评论 打赏
  • 看错误是主键冲突造成的,看一下表结构中的主键,如果业务代码自己管理主键,则需要保证主键的全局唯一性;如果主键不需要业务代码自己管理,建议将主键设置为自增的

    2019-07-17 18:37:37
    赞同 展开评论 打赏
  • 喜欢技术,喜欢努力的人

    主健内空重复了
    主健设置自增了没?有没有使用外健?
    不需要插入主键的值,在插入的时候指定字段例如
    insert into myTable1(name,age) values("zhangSam",18);

    2019-07-17 18:37:37
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
One Box: 解读事务与分析一体化数据库 HybridDB for MySQL 立即下载
One Box:解读事务与分析一体化数据库HybridDB for MySQL 立即下载
如何支撑HTAP场景-HybridDB for MySQL系统架构和技术演进 立即下载

相关镜像