注册 登录
编程论坛 J2EE论坛

[求助]数据库问题 insert语句

yoyoshi 发布于 2006-03-24 15:18, 647 次点击
请高手们帮忙

小弟在用JBuilder9作添加用户时总是报错,用地是MYsql数据库,userId是自增长列,userName是唯一约束
提交后跳转到错误页面

控制台错误信息:Duplicate entry 'tgyy' for key 2,tgyy是输入的用户名。

可报错后数据还是添加到数据库中了,不知何故,还求高手指点一下,下面是一段代码:

public int setRegister(User u) throws Exception {
int ok=0;
DBConnection db=new DBConnection();
String sql="insert into userinfo values(?,?,?,?)";
conn=db.getConnection();
try {
pst = conn.prepareStatement(sql);
pst.setString(1,MyUtil.encoding(u.getUserId()));
pst.setString(2,u.getUserName());
pst.setString(3,u.getUserPass());
pst.setString(4,u.getUserTel());
ok=pst.executeUpdate();
}
catch (SQLException ex) {
ex.printStackTrace();
ok=ex.getErrorCode();
}finally {
try {
pst.close();
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
}

return ok;
}

servlet中:

String user=request.getParameter("userName").trim();
String pass=request.getParameter("userPass").trim();
String tell=request.getParameter("userTel").trim();
UserBean ub=new UserBean();
User u=new User();
u.setUserId(null);
u.setUserName(user);
u.setUserPass(pass);
u.setUserTel(tell);
int x = 0;
try {
x = ub.setRegister(u);
}
catch (Exception ex) {
}
if(x==0)
{
response.sendRedirect("/client/admin/compQuery.jsp");
}
else
{
response.sendRedirect("/client/admin/reg_fail.jsp");
}

3 回复
#2
wangtaobig2006-03-25 22:34
String sql="insert into userinfo values(?,?,?,?)";
是这行出错了!
应该这样写“insert into userinfo(这里写上你数据库中的字段名,但不包括ID) values(?,?,?,?)”
#3
yoyoshi2006-03-27 10:16
我试过了,还是报错Duplicate entry 'tgyy' for key 2,是不是跟userName是唯一约束有关,我把约束去掉,就不报错,但是它会插入两条一样的数据,我不知是什么原因,还望指点!!
#4
wangtaobig2006-03-28 19:02

是的!但你的给我你的代码看看才能知道问题在哪!EMAIL- wangtao09081@sina.com.cn

1