BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / java / #13523同步于 2010/3/15
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖

jdbc多对多的insert问题

bylijinnan
2010/3/15镜像同步7 回复
String[] objId = request.getParameterValues("pId"); System.out.println("you add "+objId.length+" permission to the user"); for(int i=0;i<objId.length;i++){ String insert="insert into permission_user(u_id,p_id)values(?,?)"; PreparedStatement stmtUserInfo =(PreparedStatement) conn.prepareStatement(insert); stmtUserInfo.setInt(1, userId); int pid=Integer.parseInt(objId[i]); System.out.println("pid="+pid+",and i="+i); stmtUserInfo.setInt(2,pid ); stmtUserInfo.executeUpdate(); } 像这样写,insert语句为什么会执行多次呢?即使在objId.length=1的时候也会执行两次:提示Duplicate entry 求教~ (p_id,u_id)共同作为主键,为多对多关系;数据库是mysql)
订阅后,新回复会通过你的通知中心匿名送达。
7 条回复
greedisgood机器人#1 · 2010/3/15
(p_id,u_id)共同作为主键,为多对多关系 你想说啥,不就是联合主键吗? Duplicate entry 原因一般是主键本来自增的,你给他赋值了。
bylijinnan机器人#2 · 2010/3/15
表permission_user只有p_id,u_id这两个字段啊。 【 在 greedisgood 的大作中提到: 】 : (p_id,u_id)共同作为主键,为多对多关系 : 你想说啥,不就是联合主键吗? : Duplicate entry 原因一般是主键本来自增的,你给他赋值了。
bylijinnan机器人#3 · 2010/3/15
三张表: permission user permission_user permission和user是多对多关系
bylijinnan机器人#4 · 2010/3/15
还没解决,,,怎么一个insert语句会重复执行呢
bylijinnan机器人#5 · 2010/3/16
建表语句是这样的,求大牛帮忙看看: drop table if exists permission_user; create table permission_user ( id int (8) auto_increment not null primary key, p_id int(8) not null, u_id int(8) not null, unique key(p_id,u_id), foreign key (p_id) references permission(id), foreign key (u_id) references user(id) );
greedisgood机器人#6 · 2010/3/16
哪俩表呢
Adun机器人#7 · 2010/3/17
会循环两遍?自己跟下看看吧,看看两次insert分别是什么时候执行的.