我想做个注册系统,之前运行的都好好的,但把数据库清空过一次后就出问题了。代码如下
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 注册失败!”

解决方案 »

  1.   

    debug你的程序 看执行到了没。。
      

  2.   

    既然走到OK15,说明已经有Exception了啊。
    e.printStackTrace();贴出来看看呢
      

  3.   

    ps1.setString(1,Username);
    哥们  从零开始的!!!
      

  4.   

    好象是String sql1 = "insert into RegistTable values(?,?,?,?,?,?,?,?,?,?,?)";的问题,我定义的表里有11个列,但插入数值的语句里只有9个占位符现在改好了,在多加两个ps1.setString()就好了怎么回事啊?
      

  5.   

    insert into RegistTable values(?,?,?,?,?,?,?,?,?,?,?)不指定列,直接从第一列开始插入,当然报错了
    insert into RegistTable(X,X,X,X) values(?,?,?,?)这种方式,就插入到你指定的列了
      

  6.   

    新手啊求稳eclipse怎么看后台异常啊
      

  7.   

    看eclipse控制台,如果有出现类似于下面的java.lang.NullPointerException
    .......
    .
    ..
    ..
    .
    .这就是异常信息,开始不同异常是什么意思,直接复制“java.lang.NullPointerException”
    去找度娘和谷歌。就能搜到异常是什么意思,当然这里这个是空指针异常。
    然后注意观察下面的异常信息。你就会看到一些熟悉的内容
    例如.......
    .com.xxx.xxx.test.say(test.java:22)
    .......
    .
    ..
    ..
    .
    .这里就表示异常出现在com.xxx.xxx包路径下的test类的say方法,你还可以直接定位到问题行,如test.java:22
    所以 遇到问题不要急,注意观察异常信息,形成习惯,这样子能够为自己节省很多时间,也能锻炼自己对代码的分析和排错能力