碰到个奇怪的问题了,用JDBC插入一笔记录到数据库,本来是生成一笔记录的,但是实际结果总是多几笔相同的记录,

时间:2022-02-07 21:46:56
我还是第一次碰到这样的情况.而且重复的记录数是随机的,每次都不同。

我明明只执行了一条语句啊.

有谁碰到过这种情况吗?

    String insertSQL="INSERT INTO tab_user \n" +
                                 "(pk,usertype_id,username,password,nickname,realname,age\n" +
                                 " ,sex,idcard,telephone,address,province \n" +
                                 " ,city,region,email,wateruserid,wateruserpass \n"+
                                 " ,createtime,state,memo1,memo2,status) \n" +
                                 " VALUES (gzwpt_t_user_seq.nextval,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,sysdate,?,?,?,?)\n";
                System.out.println("insertsql="+insertSQL);
                try {

                      pstmt=conn.prepareStatement(insertSQL);
                      pstmt.setInt(1,ParamUtils.getIntParameter(request,"UserType", 0));
                      pstmt.setString(2,ParamUtils.getParameter(request,"Username",false));
                      pstmt.setString(3,ParamUtils.getParameter(request,"Password",false));
                      pstmt.setString(4,ParamUtils.getParameter(request,"Nickname",true));
                      pstmt.setString(5,ParamUtils.getParameter(request,"Realname",true));
                      pstmt.setInt(6,ParamUtils.getIntParameter(request,"Age", 0));
                      pstmt.setString(7,ParamUtils.getParameter(request,"Sex",true));
                      pstmt.setString(8,ParamUtils.getParameter(request,"IDcard",true));
                      pstmt.setString(9,ParamUtils.getParameter(request,"Tel",true));
                      pstmt.setString(10,ParamUtils.getParameter(request,"Address",true));
                      pstmt.setString(11,ParamUtils.getParameter(request,"Province",true));
                      pstmt.setString(12,ParamUtils.getParameter(request,"City",true));
                      pstmt.setString(13,ParamUtils.getParameter(request,"Legion",true));
                      pstmt.setString(14,ParamUtils.getParameter(request,"Email",true));
                      pstmt.setString(15,"");
                      pstmt.setString(16,"");
                      pstmt.setString(17,"");
                      pstmt.setString(18,"");
                      pstmt.setString(19,"");
                      pstmt.setInt(20,0);
                      System.out.println("insert now");
                      pstmt.executeUpdate();

6 个解决方案

#1


自己顶一下!!!!!!!!!!

#2


你的表里不是有主键吗?怎末会入多条数据呢? 把你的sql单独在数据库中运行一下试试.

#3


是不是有触发器?对oracle不熟的说

#4


为什么要加 \n???楼主把这个去掉 试试

#5


将(主键)gzwpt_t_user_seq.nextval换成常数试一试

#6


问题解决了,唉,犯了低级错误啊................

别人的程序,我来修改,没注意到提交了多次。唉............................

谢谢大家!!!!!!!!!!

#1


自己顶一下!!!!!!!!!!

#2


你的表里不是有主键吗?怎末会入多条数据呢? 把你的sql单独在数据库中运行一下试试.

#3


是不是有触发器?对oracle不熟的说

#4


为什么要加 \n???楼主把这个去掉 试试

#5


将(主键)gzwpt_t_user_seq.nextval换成常数试一试

#6


问题解决了,唉,犯了低级错误啊................

别人的程序,我来修改,没注意到提交了多次。唉............................

谢谢大家!!!!!!!!!!