我想做个注册系统,之前运行的都好好的,但把数据库清空过一次后就出问题了。代码如下
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 注册失败!”
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 注册失败!”
e.printStackTrace();贴出来看看呢
哥们 从零开始的!!!
insert into RegistTable(X,X,X,X) values(?,?,?,?)这种方式,就插入到你指定的列了
.......
.
..
..
.
.这就是异常信息,开始不同异常是什么意思,直接复制“java.lang.NullPointerException”
去找度娘和谷歌。就能搜到异常是什么意思,当然这里这个是空指针异常。
然后注意观察下面的异常信息。你就会看到一些熟悉的内容
例如.......
.com.xxx.xxx.test.say(test.java:22)
.......
.
..
..
.
.这里就表示异常出现在com.xxx.xxx包路径下的test类的say方法,你还可以直接定位到问题行,如test.java:22
所以 遇到问题不要急,注意观察异常信息,形成习惯,这样子能够为自己节省很多时间,也能锻炼自己对代码的分析和排错能力