当前位置:编程学习 > JAVA >>

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

我想做个注册系统,之前运行的都好好的,但把数据库清空过一次后就出问题了。代码如下
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 注册失败!” --------------------编程问答-------------------- debug你的程序 看执行到了没。。 --------------------编程问答-------------------- 说好的事务呢 --------------------编程问答-------------------- 既然走到OK15,说明已经有Exception了啊。
e.printStackTrace();贴出来看看呢。。。 --------------------编程问答-------------------- 你先 往数据库手动加条数据  看看   还行吗? --------------------编程问答-------------------- ps1.setString(1,Username);
哥们  从零开始的!!! --------------------编程问答--------------------
引用 3 楼  的回复:
既然走到OK15,说明已经有Exception了啊。
e.printStackTrace();贴出来看看呢。。。


对 你看看后台异常,很多错误都可以通过异常信息去排查,要学会看异常信息 --------------------编程问答-------------------- 好象是String sql1 = "insert into RegistTable values(?,?,?,?,?,?,?,?,?,?,?)";的问题,我定义的表里有11个列,但插入数值的语句里只有9个占位符。。。现在改好了,在多加两个ps1.setString()就好了。。。怎么回事啊? --------------------编程问答-------------------- insert into RegistTable values(?,?,?,?,?,?,?,?,?,?,?)不指定列,直接从第一列开始插入,当然报错了
insert into RegistTable(X,X,X,X) values(?,?,?,?)这种方式,就插入到你指定的列了 --------------------编程问答-------------------- 新手啊。。。求稳eclipse怎么看后台异常啊。。。 --------------------编程问答-------------------- 你这代码的写的。真乱 --------------------编程问答-------------------- - -.....来指导一下吧....谢谢啦 --------------------编程问答--------------------
引用 9 楼  的回复:
新手啊。。。求稳eclipse怎么看后台异常啊。。。

看eclipse控制台,如果有出现类似于下面的

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

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

.......
.

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

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


所以 遇到问题不要急,注意观察异常信息,形成习惯,这样子能够为自己节省很多时间,也能锻炼自己对代码的分析和排错能力 --------------------编程问答-------------------- 低级错误,不解释 --------------------编程问答-------------------- 应该是没有正确插入数据,所以读取来的也是空值
补充:Java ,  Web 开发
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,