现有2个页面,1个是用户注册,1个是显示用户信息,并建了个空的数据库,要把用户信息存入数据库,但报错了,如下:
数据库
create database Operagouse Operago/*用户表*/
CREATE TABLE users(
UserName char(10) not null primary key,
UserPWD char(10) not null,
Sex char(2) not null,
Blood char(2) not null,
Chara char(10) not null,
Memo char(100) not null,
City char(10) not null,
)注册页面
<HTML><BODY>
<FORM ACTION="register.jsp" METHOD="POST">
<P>帐号:<INPUT TYPE="TEXT" SIZE="20" NAME="UserID"></P>
<P>密码:<INPUT TYPE="PASSWORD" SIZE="20" NAME="UserPWD"></P>
性别:
<input type="radio" name="SEX" value="男" Checked/>男
<input type="radio" name="SEX" value="女" />女
<br><br>
血型:
<input type="radio" name="BLOOD" value="O" Checked />O
<input type="radio" name="BLOOD" value="A" />A
<input type="radio" name="BLOOD" value="B" />B
<input type="radio" name="BLOOD" value="AB" />AB
<br><br>
性格:
<input type="checkbox" name="CHATACTER" value="热情大方" Checked/>热情大方
<input type="checkbox" name="CHATACTER" value="内向腼腆" />内向腼腆
<input type="checkbox" name="CHATACTER" value="双重性格" />双重性格
<br><br>
简介:<textarea ROWS="8" COLS="30" name="MEMO" ></textarea><br><br>
城市:<select size="1" name="CITY">
<option VALUE="北京">北京市</option>
<option VALUE="上海">上海市</option>
<option VALUE="天津">天津市</option>
<option VALUE="重庆">重庆市</option>
<option VALUE="湖南">湖南省</option>
<option VALUE="湖北">湖北省</option>
<option VALUE="江西">江西省</option>
<option VALUE="四川">四川省</option>
<option VALUE="贵州">贵州省</option>
<option VALUE="浙江">浙江省</option>
<option VALUE="福建">福建省</option>
<option VALUE="新疆">新疆</option>
<option VALUE="内蒙古">内蒙古</option>
<option VALUE="香港">香港</option>
<option VALUE="台湾">台湾</option>
</select><br><br>
<INPUT TYPE="SUBMIT" VALUE="注 册">
<INPUT TYPE="RESET" VALUE="重 置">
</FORM>
</BODY></HTML>
显示页面:
<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.sql.*"%>
<html>
<body>
<%
String driverClass="com.microsoft.jdbc.sqlserver.SQLServerDriver";
Class.forName(driverClass);
String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=Opera";
//statement查询操作
String user="sa";
String password="";
Connection conn=DriverManager.getConnection(url,user,password);
Statement stmt=conn.createStatement();
String sql="select * from users";
ResultSet rs=stmt.executeQuery(sql); PreparedStatement ps=conn.prepareStatement("insert into users values (?,?,?,?,?,?,?)");
ps.setString(1,"request.getParameter('UserID')");
ps.setString(2,"request.getParameter('UserPWD')");
ps.setString(3,"request.getParameter('SEX')");
ps.setString(4,"request.getParameter('BLOOD')");
ps.setString(5,"request.getParameter('CHATACTER')");
ps.setString(6,"request.getParameter('MEMO')");
ps.setString(7,"request.getParameter('CITY')"); int num=ps.executeUpdate();
while(rs.next()) {
%> 您的注册信息如下:<br>
帐号::<%=rs.getString(1)%><br>
密码:<%=rs.getString(2)%><br>
性别:<%=rs.getString(3)%><br>
血型:<%=rs.getString(4)%><br>
性格:<%=rs.getString(5)%><br>
简介:<%=rs.getString(6)%><br>
城市:<%=rs.getString(7)%>
<p>
<%}%>
<%out.print("恭喜你,已经成为本网站会员!");%> <br>
请<A href="login.jsp">登录</A>进入本站首页
<%rs.close();
stmt.close();
conn.close();
%>
数据库
create database Operagouse Operago/*用户表*/
CREATE TABLE users(
UserName char(10) not null primary key,
UserPWD char(10) not null,
Sex char(2) not null,
Blood char(2) not null,
Chara char(10) not null,
Memo char(100) not null,
City char(10) not null,
)注册页面
<HTML><BODY>
<FORM ACTION="register.jsp" METHOD="POST">
<P>帐号:<INPUT TYPE="TEXT" SIZE="20" NAME="UserID"></P>
<P>密码:<INPUT TYPE="PASSWORD" SIZE="20" NAME="UserPWD"></P>
性别:
<input type="radio" name="SEX" value="男" Checked/>男
<input type="radio" name="SEX" value="女" />女
<br><br>
血型:
<input type="radio" name="BLOOD" value="O" Checked />O
<input type="radio" name="BLOOD" value="A" />A
<input type="radio" name="BLOOD" value="B" />B
<input type="radio" name="BLOOD" value="AB" />AB
<br><br>
性格:
<input type="checkbox" name="CHATACTER" value="热情大方" Checked/>热情大方
<input type="checkbox" name="CHATACTER" value="内向腼腆" />内向腼腆
<input type="checkbox" name="CHATACTER" value="双重性格" />双重性格
<br><br>
简介:<textarea ROWS="8" COLS="30" name="MEMO" ></textarea><br><br>
城市:<select size="1" name="CITY">
<option VALUE="北京">北京市</option>
<option VALUE="上海">上海市</option>
<option VALUE="天津">天津市</option>
<option VALUE="重庆">重庆市</option>
<option VALUE="湖南">湖南省</option>
<option VALUE="湖北">湖北省</option>
<option VALUE="江西">江西省</option>
<option VALUE="四川">四川省</option>
<option VALUE="贵州">贵州省</option>
<option VALUE="浙江">浙江省</option>
<option VALUE="福建">福建省</option>
<option VALUE="新疆">新疆</option>
<option VALUE="内蒙古">内蒙古</option>
<option VALUE="香港">香港</option>
<option VALUE="台湾">台湾</option>
</select><br><br>
<INPUT TYPE="SUBMIT" VALUE="注 册">
<INPUT TYPE="RESET" VALUE="重 置">
</FORM>
</BODY></HTML>
显示页面:
<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.sql.*"%>
<html>
<body>
<%
String driverClass="com.microsoft.jdbc.sqlserver.SQLServerDriver";
Class.forName(driverClass);
String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=Opera";
//statement查询操作
String user="sa";
String password="";
Connection conn=DriverManager.getConnection(url,user,password);
Statement stmt=conn.createStatement();
String sql="select * from users";
ResultSet rs=stmt.executeQuery(sql); PreparedStatement ps=conn.prepareStatement("insert into users values (?,?,?,?,?,?,?)");
ps.setString(1,"request.getParameter('UserID')");
ps.setString(2,"request.getParameter('UserPWD')");
ps.setString(3,"request.getParameter('SEX')");
ps.setString(4,"request.getParameter('BLOOD')");
ps.setString(5,"request.getParameter('CHATACTER')");
ps.setString(6,"request.getParameter('MEMO')");
ps.setString(7,"request.getParameter('CITY')"); int num=ps.executeUpdate();
while(rs.next()) {
%> 您的注册信息如下:<br>
帐号::<%=rs.getString(1)%><br>
密码:<%=rs.getString(2)%><br>
性别:<%=rs.getString(3)%><br>
血型:<%=rs.getString(4)%><br>
性格:<%=rs.getString(5)%><br>
简介:<%=rs.getString(6)%><br>
城市:<%=rs.getString(7)%>
<p>
<%}%>
<%out.print("恭喜你,已经成为本网站会员!");%> <br>
请<A href="login.jsp">登录</A>进入本站首页
<%rs.close();
stmt.close();
conn.close();
%>
解决方案 »
- 开机启动问题
- 专家!我在安装Java虚拟机的时候出错了,现在删不了了啊也从新安装不了。这是怎么回事啊?请专家的帮帮我啊!急!
- 最新版 java 报表工具 iReport 的使用
- 用Ethereal抓包,只能抓到自己机器的包,但是内网里其他机器的包无法抓到。
- build failed,java returned 95
- 用eclipse编写一个struts程序后,Tomcat启动时出现了以下错误(分不多了,请求帮忙)
- 请教各位前辈,JBOSS中报错500,能教我怎么解决吗
- 急求!!!!时间比较问题,分值可以再加!!
- 怎样把我做好的webservice发布到internet上?是不是只要在我的主页上挂个超链(到部署webservice生成的wsdl文件)就行了?
- ejb远程调用的返回参数问题
- extjs与jquery各自的优势
- springMVC与velocity实现一个简单的静态页面数据传送
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:532)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:408)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
你都打印出来看下
Sex char(2) not null,
Blood char(2) not null,
而你
ps.setString(3,"request.getParameter('SEX')");
ps.setString(4,"request.getParameter('BLOOD')");
这不明显的超了吗。
还有你在数据库表的时候不要用char
最好用varchar,貌似如果你不小心有空格也会报错的。
<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.sql.*"%>
<html>
<body>
<%String id= request.getParameter("UserID");
String pwd=request.getParameter("UserPWD");
String sex=request.getParameter("SEX");
String blood=request.getParameter("BLOOD");
String cha=request.getParameter("CHATACTER");
String memo=request.getParameter("MEMO");
String city=request.getParameter("CITY");String driverClass="com.microsoft.jdbc.sqlserver.SQLServerDriver";
Class.forName(driverClass);
String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=Opera";
//statement查询操作
String user="sa";
String password="";
Connection conn=DriverManager.getConnection(url,user,password);
Statement stmt=conn.createStatement();
String sql="select * from users";
ResultSet rs=stmt.executeQuery(sql); PreparedStatement ps=conn.prepareStatement("insert into users values (?,?,?,?,?,?,?)");
ps.setString(1,"id");
ps.setString(2,"pwd");
ps.setString(3,"sex");
ps.setString(4,"blood");
ps.setString(5,"cha");
ps.setString(6,"memo");
ps.setString(7,"city"); int num=ps.executeUpdate();
while(rs.next()) {
%> 您的注册信息如下:<br>
帐号:<%=rs.getString(1)%><br>
密码:<%=rs.getString(2)%><br>
性别:<%=rs.getString(3)%><br>
血型:<%=rs.getString(4)%><br>
性格:<%=rs.getString(5)%><br>
简介:<%=rs.getString(6)%><br>
城市:<%=rs.getString(7)%>
<p>
<%}%>
<%out.print("恭喜你,已经成为本网站会员!");%> <br>
请<A href="login.jsp">登录</A>进入本站首页
<%rs.close();
stmt.close();
conn.close();
%>
HTTP Status 500 - --------------------------------------------------------------------------------type Exception reportmessage description The server encountered an internal error () that prevented it from fulfilling this request.exception org.apache.jasper.JasperException: javax.servlet.ServletException: java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]违反了 PRIMARY KEY 约束 'PK__users__76CBA758'。不能在对象 'users' 中插入重复键。
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:532)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:408)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
root cause javax.servlet.ServletException: java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]违反了 PRIMARY KEY 约束 'PK__users__76CBA758'。不能在对象 'users' 中插入重复键。
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:855)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:784)
org.apache.jsp.register_jsp._jspService(register_jsp.java:133)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:384)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
root cause java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]违反了 PRIMARY KEY 约束 'PK__users__76CBA758'。不能在对象 'users' 中插入重复键。
com.microsoft.jdbc.base.BaseExceptions.createException(Unknown Source)
com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)
com.microsoft.jdbc.sqlserver.tds.TDSRequest.processErrorToken(Unknown Source)
com.microsoft.jdbc.sqlserver.tds.TDSRequest.processReplyToken(Unknown Source)
com.microsoft.jdbc.sqlserver.tds.TDSRPCRequest.processReplyToken(Unknown Source)
com.microsoft.jdbc.sqlserver.tds.TDSRequest.processReply(Unknown Source)
com.microsoft.jdbc.sqlserver.SQLServerImplStatement.getNextResultType(Unknown Source)
com.microsoft.jdbc.base.BaseStatement.commonTransitionToState(Unknown Source)
com.microsoft.jdbc.base.BaseStatement.postImplExecute(Unknown Source)
com.microsoft.jdbc.base.BasePreparedStatement.postImplExecute(Unknown Source)
com.microsoft.jdbc.base.BaseStatement.commonExecute(Unknown Source)
com.microsoft.jdbc.base.BaseStatement.executeUpdateInternal(Unknown Source)
com.microsoft.jdbc.base.BasePreparedStatement.executeUpdate(Unknown Source)
org.apache.jsp.register_jsp._jspService(register_jsp.java:88)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:384)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
note The full stack trace of the root cause is available in the Apache Tomcat/6.0.10 logs.
--------------------------------------------------------------------------------Apache Tomcat/6.0.10
ps.setString(1,id);
ps.setString(2,pwd);
ps.setString(3,sex);
ps.setString(4,blood);
ps.setString(5,cha);
ps.setString(6,memo);
ps.setString(7,city);
另加了句request.setCharacterEncoding("GBK");可是运行结果还是有错(不仅乱码,而且输入几次就会显示几个用户的信息):
您的注册信息如下:
帐号:°?
密码:1
性别:?D
血型:O
性格:èè?é′ó??
简介:μ?
城市:±±??
您的注册信息如下:
帐号:μ?
密码:1
性别:?D
血型:O
性格:èè?é′ó??
简介:?àéù
城市:±±?? 您的注册信息如下:
帐号:是
密码:2
性别:男
血型:O
性格:热情大方
简介:才
城市:北京 恭喜你,已经成为本网站会员!
请登录进入本站首页