jsp中sql的insert语句问题

下面这段话有什么问题,输入已有的用户名会执行“该用户名已存在”,但是输入新的用户名显示注册成功但是数据库里没有新的记录,应该是赋值语句有问题,请问insert语句哪里错了呢
String username=request.getParameter("r_user");
String password=request.getParameter("r_password");
sql=conn.createStatement();
rs=sql.executeQuery("select * from user where username='"+username+"'");
if(!rs.next()){String updateCondition="insert into user(username,password)values('"+username+"','"+password+"')";
out.print("注册成功!");response.setHeader("refresh","2;URL=index.jsp");}else{out.print("该用户名已存在");response.setHeader("refresh", "3;URL=reg2.jsp");}
}

5个回答

如果存在,你只是写了一个sql语句,并没有执行操作update啊,当然不会insert到数据了
而且SQL语句使用拼接的方式会有SQL注入漏洞的,建议改成动态传参的方式

a153048573
ooooooooooooooooooMG 回复yougehubi: - - 原来是你一直没有输出异常啊...你去查一下LOG4J怎么用,调试的时候能把异常报的更清楚点
5 年多之前 回复
yougehubi
yougehubi 已经解决了 谢谢你 我从网上找了输出e.printStactTrace()内容的语句,发现我有个列设定了非空并且没设默认值,所以没法添加记录。。。把那列的初始值赋上就好了。。。谢谢你哈
5 年多之前 回复
a153048573
ooooooooooooooooooMG 回复yougehubi: 是啊,所以我想问的是到catch里到底报什么错了
5 年多之前 回复
yougehubi
yougehubi 这些都是写在try语句里的 现在直接跳过try执行catch了 如果把update语句注释只留下if(!rs.next()) out.print("注册成功!");response.setHeader("refresh","2;URL=index.jsp");}else{out.print("该用户名已存在");response.setHeader("refresh", "3;URL=reg2.jsp");}就可以,而且已注册的帐号会提示已存在。不知道哪里有问题。。。
5 年多之前 回复
a153048573
ooooooooooooooooooMG 回复yougehubi: 呃..那最后报什么错了么?
5 年多之前 回复
yougehubi
yougehubi 完整的代码是Statement sql=conn.createStatement();String updateCondition="insert into user(username,password)values('"+username+"','"+password+"')"; sql.executeUpdate(updateCondition);我看好多人都是这么写的 为啥不执行呢
5 年多之前 回复
a153048573
ooooooooooooooooooMG 回复yougehubi:判断里的这句话 sql=conn.createStatement(); 去掉,executeUpdate返回的是int,判断下结果再提示是成功还是失败
5 年多之前 回复
yougehubi
yougehubi 我在后面加上了sql=conn.createStatement();sql.executeUpdate(updateCondition);还是不能执行
5 年多之前 回复
a153048573
ooooooooooooooooooMG 回复yougehubi: 没问题啊
5 年多之前 回复
yougehubi
yougehubi 那!rs.next()这个判断对么 是不是也有问题
5 年多之前 回复

为什么是if(!rs.next())

yougehubi
yougehubi 那应该怎么判断呢 当数据库中没有该用户名的时候可以注册
5 年多之前 回复

在if(!rs.next()=0){}好像是这么写的吧,你漏了一个=0.。。好像就是说当数据库中数据为空时才会执行以下操作吧。。你试试看

这不就是简单的验证么?

sql语句都没执行,楼主还是好好找本jsp的教程来看看,而且sql语句语法也很生疏从你上一提出的问题就看出来

yougehubi
yougehubi 嗯 初学还有好多地方不懂,改成if(!rs.next()){String updateCondition="insert into user(username,password)values('"+username+"','"+password+"')"; sql=conn.createStatement();sql.executeUpdate(updateCondition); out.print("注册成功!");response.setHeader("refresh","2;URL=index.jsp");}输入已有用户显示该用户已存在,输入新的用户直接跳过这段try语句执行后面的catch了,这个插入语句有什么错误么
5 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问