读书人

为什么页面上的数据不能插入到数据库中

发布时间: 2011-12-14 23:20:17 作者: rapoo

为什么页面上的数据不能插入到数据库中?郁闷中,怎么办?~~~
YongZhuCe.java

package check;
import java.sql.*;
import check.DBConnectionManager;
import javax.servlet.http.HttpServletRequest;

public class YongZhuCe extends DataBase
{
private javax.servlet.http.HttpServletRequest request;

private String message = " ";
private String username = " ";
private String password = " ";
private String pwdconfirm = " ";
private String email = " ";
private String sex = " ";
private String realname = " ";
private String phone = " ";
private String address = " ";

public YongZhuCe()
{
super();
}



public boolean getRequest(javax.servlet.http.HttpServletRequest newrequest)
{
boolean flag = false;

try
{
request = newrequest;

username = request.getParameter( "username ");
if(username == null || username.equals( " "))
{
username = " ";
message = message + "用户名为空! ";
}
byte A[] = username.getBytes( "ISO8859-1 ");
username = new String(A);


password = request.getParameter( "passwd ");
if(password == null || password.equals( " "))
{
password = " ";
message = message + "密码为空! ";
}
pwdconfirm = request.getParameter( "pwdconfirm ");
if(!password.equals(pwdconfirm))
{
message = message + "确认密码不相同! ";
}
byte B[] = password.getBytes( "ISO8859-1 ");
password = new String(B);


email = request.getParameter( "email ");
if(email == null || email.equals( " "))


{
email = " ";
message = message + "电子信箱为空! ";
}
byte C[] = email.getBytes( "ISO8859-1 ");
email = new String(C);


sex = request.getParameter( "sex ");
byte D[] = sex.getBytes( "ISO8859-1 ");
sex = new String(D);


realname = request.getParameter( "realname ");
if(realname == null)
{
realname = " ";
}
byte E[] = realname.getBytes( "ISO8859-1 ");
realname = new String(E);


phone = request.getParameter( "phone ");
if(phone == null)
{
phone = " ";
}
byte F[] = phone.getBytes( "ISO8859-1 ");
phone = new String(F);


address = request.getParameter( "address ");
if(address == null)
{
address = " ";
}
byte G[] = address.getBytes( "ISO8859-1 ");
address = new String(G);


if(message.equals( " "))
{
flag = true;
}
return flag;
}
catch(Exception E)
{
return flag;
}
}


public boolean insert(HttpServletRequest req) throws Exception
{
if(getRequest(req))
{
try
{
sqlStr = "select * from Registration where UserName = ' " + username + " ' ";


rs = stmt.executeQuery(sqlStr);

if(rs.next())
{
message = message + "该用户已经存在! ";
rs.close();
return false;
}

sqlStr =
"insert into Registration(UserName, PassWord, Email, Sex, RealName, Phone, Address)values( ' " + username + " ', ' " + password + " ', ' " + email + " ', ' " + sex + " ', ' " + realname + " ', ' " + phone + " ', ' " + address + " ') ";
//stmt.executeUpdate(sqlStr); //我不知道是否需要加这句,现已屏蔽。
rs.close();
//stmt.close();
return true;
}
catch(NullPointerException N)
{
System.out.println(N);
}
}
else
{
return false;
}

return true;
}


public void setMessages(String newmsg)
{
message = newmsg;
}
public String getMessage()
{
return message;
}


public void setUsername(String newname)
{
username = newname;
}
public String getUsername()
{
return username;
}


public static void main(String args[])
{
YongZhuCe yzc = new YongZhuCe();
}
}

*************************************************************************
reg.jsp
<%
String mesg = " "; //声明 mesg
String submit = request.getParameter( "Submit "); //声明 submit,将按钮 Submit 中的信息传给 submit



if(submit != null && !submit.equals( " ")) //如果 submit 内的值不为空的话
{
if(userReg.insert(request)) //如果 request 中的值在缓存 user 中存在的话
{
session.setAttribute( "username ",userReg.getUsername()); //获取 UserName 中的值,并存入 username 中
response.sendRedirect( "RegSucceed.jsp "); //转至注册成功页面
}
else if(!userReg.getMessage().equals( " ")) //否则如果获取的 Message 不为空的话
{
mesg = userReg.getMessage(); //将获取的 Message 中的值传给 mesg
}
else //否则为空的话
{
mesg = "注册时出现错误,请稍后再试! "; //将错误信息传给 mesg
}
}
%>

YongZhuCe.java 文件通过了,没有出现错误,reg.jsp文件也通过了,同样没有错误。在页面中输入数据按“确定”后可成功跳转到另一个页面,可是那些数据却不能插入到数据库中。没有报任何的错误信息。请问我是错哪了?请高手帮帮我,我该如何是好?谢谢~~~~

附:数据源早就设好了,Registration 为表名,UserName, PassWord, Email, Sex, RealName, Phone, Address 这些是字段名
开发工具:JDK V1.4.2.04 + Tomcat V5.0.28, Microsoft SQL Server 2000

[解决办法]
connection可重复使用,但是处理命令和预处理命令一次数据库语句执行就得定义一次。。。
不然文件通过,不提示错误,但是那一句SQL却不执行,呵呵,
sqlStr =
"insert into Registration(UserName, PassWord, Email, Sex, RealName, Phone, Address)values( ' " + username + " ', ' " + password + " ', ' " + email + " ', ' " + sex + " ', ' " + realname + " ', ' " + phone + " ', ' " + address + " ') ";
//stmt.executeUpdate(sqlStr);
再定义一个stmt1来用
[解决办法]
恭喜你,答对了,加10分,剩下的是我的
[解决办法]
关注

读书人网 >Java Web开发

热点推荐