插入mysql数据库老是报500错误

尐技术 2010-02-20 01:48:29
type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

org.apache.jasper.JasperException: An exception occurred processing JSP page /pages/addanswer2.jsp at line 23

20: pmt.setString(2,them);
21: pmt.setString(3,txt);
22: pmt.setString(4,time);
23: if(pmt.executeUpdate()>0)
24: {
25: response.sendRedirect("answer.jsp");
26: }


Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:505)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:398)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)


root cause

javax.servlet.ServletException: com.mysql.jdbc.exceptions.MySQLIntegrityConstraintViolationException: Duplicate entry 'one' for key 1
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:862)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:791)
org.apache.jsp.pages.addanswer2_jsp._jspService(addanswer2_jsp.java:93)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)


root cause

com.mysql.jdbc.exceptions.MySQLIntegrityConstraintViolationException: Duplicate entry 'one' for key 1
com.mysql.jdbc.SQLError.createSQLException(SQLError.java:931)
com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2985)
com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1631)
com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1723)
com.mysql.jdbc.Connection.execSQL(Connection.java:3283)
com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1332)
com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1604)
com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1519)
com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1504)
org.apache.jsp.pages.addanswer2_jsp._jspService(addanswer2_jsp.java:77)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
note The full stack trace of the root cause is available in the Apache Tomcat/6.0.20 logs.
addanswer2.jsp
<%@ page contentType="text/html;charset=GBK" pageEncoding="GBK"%>
<%@ page import="java.sql.*"%>
<html>
<head>
<title>增添留言信息</title>
</head>
<body>
<%
Class.forName("com.mysql.jdbc.Driver").newInstance();
String url="jdbc:mysql://localhost:3306/test?useUnicode=true&charsetEncoding=GBK";
Connection conn=DriverManager.getConnection(url,"root","1234");
request.setCharacterEncoding("GBK");
String userid=request.getParameter("user");
String them=request.getParameter("contxtThem");
String txt=request.getParameter("contxtcontent");
String time=request.getParameter("contxtTime");
them=new String(them.getBytes("iso8859-1"),"GBK");
PreparedStatement pmt=conn.prepareStatement("insert into userAnswer(userName,contxtThem,contxtcontent,contxtTime) values(?,?,?,?)");
pmt.setString(1,userid);
pmt.setString(2,them);
pmt.setString(3,txt);
pmt.setString(4,time);
if(pmt.executeUpdate()>0)
{
response.sendRedirect("answer.jsp");
}
conn.close();

%>

</body>
</html>
...全文
706 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
cbdhxka 2010-02-20
  • 打赏
  • 举报
回复
有可能是你的主键重复了,插入失败,在设计数据库的时候可以用一个ID字段来做主键,这个ID可让他自增,或者做一个让他不唯一的算法(如系统时间精确至毫秒+一自增随机数)来计算得到。
紫炎圣骑 2010-02-20
  • 打赏
  • 举报
回复
把数据库中的数据清空

再试一次
dinghun8leech 2010-02-20
  • 打赏
  • 举报
回复
数据库是不会报500错的,500错代表服务器端程序出错,是属于http服务器那一层的错误代码。
BearKin 2010-02-20
  • 打赏
  • 举报
回复
没见过这个错误 LZ可以实验看看
老紫竹 2010-02-20
  • 打赏
  • 举报
回复
看来还是新手多,或者英文不好。
Duplicate entry 'one' for key 1

很明显,主键重复,你每次都把id设置为相同的数值,数据库里当然就重复了
LuffySY 2010-02-20
  • 打赏
  • 举报
回复
查看数据库表是否设置的自增字段,自增字段不需要pmt.setString()
扁鵲東南飛 2010-02-20
  • 打赏
  • 举报
回复
pmt.setString(1,userid);

你这个在 mysql 里面是否已经设置为自增了?

如果设置了。那么这句话就不用写了。。

 //pmt.setString(1,userid);
pmt.setString(1,them);
pmt.setString(2,txt);
pmt.setString(3,time)
chenxizhiyi 2010-02-20
  • 打赏
  • 举报
回复
我觉得楼上说的挺对的
chen09 2010-02-20
  • 打赏
  • 举报
回复
是不是你的表里面有自增字段?
那么insert时,设这个字段的话,好像就会有这个错误。

81,091

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧