请高手们指定一二,JSP数据库插入的问题,明明没有插入相同的主键,为什么总是提醒我违反了 PRIMARY KEY 约束 'PK_T_USER'。不能在对象 'T_U
插入代码如下:
//执行数据库注册用户信息
public void createuserinfo()throws Exception
{
String reg= "insert into T_USER values(?,?,?,?,?,?,?,?,?) ";
try
{
PreparedStatement pstmt=conn.prepareStatement(reg);
pstmt.setString(1,userInfo.getUID());
pstmt.setString(2,userInfo.getUPASSWORD());
pstmt.setString(3,userInfo.getEMAIL());
pstmt.setString(4,db.getStr(userInfo.getUSERNAME()));
pstmt.setInt(5,userInfo.getSEXID());
pstmt.setInt(6,userInfo.getBIRTH_YEAR());
pstmt.setInt(7,userInfo.getBIRTH_MON());
pstmt.setInt(8,userInfo.getBIRTH_DATE());
pstmt.setInt(9,0);
int n=pstmt.executeUpdate();
System.out.println(n);
System.out.println( "用户名是: "+userInfo.getUID());
System.out.println( "密码是: "+userInfo.getUPASSWORD());
System.out.println( "姓名是: "+db.getStr(userInfo.getUSERNAME()));
System.out.println( "EMAIL是: "+userInfo.getEMAIL());
System.out.println( "性别是: "+userInfo.getSEXID());
System.out.println( "出生年份是: "+userInfo.getBIRTH_YEAR());
System.out.println( "出生月份是: "+userInfo.getBIRTH_MON());
System.out.println( "出生日期: "+userInfo.getBIRTH_DATE());
}
catch(Exception e)
{
System.out.println(e);
throw e;
}
conn.close();
}
JSP调用此处理过程如下:
<%@ page language= "java " buffer= "none " import= "java.util.* " pageEncoding= "UTF-8 "%>
<jsp:useBean id= "userInfo " class= "cn.UserInfo " scope= "session ">
<jsp:setProperty name= "userInfo " property= "* "/>
</jsp:useBean>
<jsp:useBean id= "user " class= "cn.Usermanager " scope= "page "/>
<%
String ID=request.getParameter( "UID ");
boolean d=user.isuserexist(ID);
try{
if(d)
{
user.setUserInfo(userInfo);
user.createuserinfo();
response.sendRedirect( "index.html ");
}
else
{
response.sendRedirect( "regist.html ");
}
}catch(Exception e){e.printStackTrace();}
%>
[解决办法]
System.out.println( "密码是: "+userInfo.getUPASSWORD());
System.out.println( "姓名是: "+db.getStr(userInfo.getUSERNAME()));
System.out.println( "EMAIL是: "+userInfo.getEMAIL());
System.out.println( "性别是: "+userInfo.getSEXID());
System.out.println( "出生年份是: "+userInfo.getBIRTH_YEAR());
System.out.println( "出生月份是: "+userInfo.getBIRTH_MON());
System.out.println( "出生日期: "+userInfo.getBIRTH_DATE());
先把数据输出再查原因
[解决办法]
在最上面加上conn.setAutoCommimt(true);//怀疑你没有提交
int n=pstmt.executeUpdate();在这句之后加上pstmt.close();
[解决办法]
<jsp:useBean id= "userInfo " class= "cn.UserInfo " scope= "session ">
晕死,原来是session……
Bean的作用域
<jsp:useBean> 标签的SCOPE属性完成很简单的功能:它设置相关的bean的作用域,有四个可能的值;
作用域 描述
Page 对象只可被来自它所在页的一个客户机程序存取。
request 对象在一个客户请求的生存时间内被一个客户机程序存取。 ---用这个!!!
session 对象在整个用户会话的生存时间内被来自该应用程序中任何地方的一个客户机程序存取。
application 对象在应用程序的生存时间内可以被应用程序内来自任何页面的客户机程序存取。