有关row = ps1.executeUpdate();不执行也不报错的问题

oopsniubi 2012-09-27 01:48:40
我想做个注册系统,之前运行的都好好的,但把数据库清空过一次后就出问题了。代码如下
try
{
Connection conn = null;
ResultSet rs = null;
Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/jimoran";
String name = "root";
String pass = "85452565";
conn = DriverManager.getConnection(url,name,pass);//此句为被执行!
%><%="OK1"%><% //此举被运行

if(conn == null)
{
%><a href = "RegistSystem.html">数据库无法连接!</a><%
%><%="OK3"%><% //正确
}

else if(Password.equals(Againpass) == false)
{
%><a href = "RegistSystem.html">两次密码不一致!</a><%
%><%="OK5"%><% //正确
}

else if(IDnumber.length()<15||IDnumber.length()>19)
{
%><a href = "RegistSystem.html">请输入正确的身份证号码!</a><%
%><%="OK4"%><% //正确
}



else
{
%><%="OK2"%><% //yunxin
String sql = "select username from RegistTable where username = '"+Username+"'";
%><%="OK6"%><% //运行
PreparedStatement ps = conn.prepareStatement(sql);
%><%="OK7"%><% //运行到这里
rs = ps.executeQuery();//运行
%><%="OK8"%><%

if(rs.next())
{
%><a href = "RegistSystem.html">用户名已经存在!</a><%

}
else
{
%><%="OK9"%><%
String sql1 = "insert into RegistTable values(?,?,?,?,?,?,?,?,?)";
%><%="OK10 "%><%
PreparedStatement ps1 = conn.prepareStatement(sql1);
%><%="OK11 "%><%
ps1.setString(1,Username);
ps1.setString(2,Password);
ps1.setString(3,realname);
ps1.setString(4,IDnumber);
ps1.setString(5,age);
ps1.setString(6,gender);
ps1.setString(7,telephone);
ps1.setString(8,actor);
ps1.setString(9,major);
%><%="OK12 "%><%
int row = -1;
row = ps1.executeUpdate();//不运行,也不报错
%><%="OK13 "%><%
if(row > 0)
{
%><%="OK14 "%><%
%><a href = "RegistSystem.html">注册成功!</a><%
}

}
ps.close();
}
rs.close();

}
catch(Exception e)
{
%><%="OK15 "%><%
%><a href = "RegistSystem.html">注册失败!</a><%
e.printStackTrace();
}

我用"%><%=OKXX %>"找哪句话没执行的,结果显示“OK1OK2OK6OK7OK8OK9OK10 OK11 OK12 OK15 注册失败!”
...全文
378 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
comeandgo201205 2012-09-28
  • 打赏
  • 举报
回复
应该是没有正确插入数据,所以读取来的也是空值
什么都不能 2012-09-28
  • 打赏
  • 举报
回复
低级错误,不解释
闭目鱼 2012-09-28
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 的回复:]
新手啊。。。求稳eclipse怎么看后台异常啊。。。
[/Quote]
看eclipse控制台,如果有出现类似于下面的

java.lang.NullPointerException
.......
.
..
..
.
.

这就是异常信息,开始不同异常是什么意思,直接复制“java.lang.NullPointerException”
去找度娘和谷歌。就能搜到异常是什么意思,当然这里这个是空指针异常。
然后注意观察下面的异常信息。你就会看到一些熟悉的内容
例如

.......
.

com.xxx.xxx.test.say(test.java:22)
.......
.
..
..
.
.

这里就表示异常出现在com.xxx.xxx包路径下的test类的say方法,你还可以直接定位到问题行,如test.java:22


所以 遇到问题不要急,注意观察异常信息,形成习惯,这样子能够为自己节省很多时间,也能锻炼自己对代码的分析和排错能力
oopsniubi 2012-09-27
  • 打赏
  • 举报
回复
- -.....来指导一下吧....谢谢啦
s251546786 2012-09-27
  • 打赏
  • 举报
回复
你这代码的写的。真乱
oopsniubi 2012-09-27
  • 打赏
  • 举报
回复
新手啊。。。求稳eclipse怎么看后台异常啊。。。
  • 打赏
  • 举报
回复
insert into RegistTable values(?,?,?,?,?,?,?,?,?,?,?)不指定列,直接从第一列开始插入,当然报错了
insert into RegistTable(X,X,X,X) values(?,?,?,?)这种方式,就插入到你指定的列了
oopsniubi 2012-09-27
  • 打赏
  • 举报
回复
好象是String sql1 = "insert into RegistTable values(?,?,?,?,?,?,?,?,?,?,?)";的问题,我定义的表里有11个列,但插入数值的语句里只有9个占位符。。。现在改好了,在多加两个ps1.setString()就好了。。。怎么回事啊?
闭目鱼 2012-09-27
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]
既然走到OK15,说明已经有Exception了啊。
e.printStackTrace();贴出来看看呢。。。
[/Quote]

对 你看看后台异常,很多错误都可以通过异常信息去排查,要学会看异常信息
wangzhonglong456 2012-09-27
  • 打赏
  • 举报
回复
ps1.setString(1,Username);
哥们 从零开始的!!!
wangzhonglong456 2012-09-27
  • 打赏
  • 举报
回复
你先 往数据库手动加条数据 看看 还行吗?
菖蒲老先生 2012-09-27
  • 打赏
  • 举报
回复
既然走到OK15,说明已经有Exception了啊。
e.printStackTrace();贴出来看看呢。。。
  • 打赏
  • 举报
回复
说好的事务呢
cxw3152 2012-09-27
  • 打赏
  • 举报
回复
debug你的程序 看执行到了没。。

81,091

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧