下面是我的代码
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'
请大神帮我看看,哪里有问题
看错误是主键冲突造成的,看一下表结构中的主键,如果业务代码自己管理主键,则需要保证主键的全局唯一性;如果主键不需要业务代码自己管理,建议将主键设置为自增的
主健内空重复了
主健设置自增了没?有没有使用外健?
不需要插入主键的值,在插入的时候指定字段例如insert into myTable1(name,age) values("zhangSam",18);
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。