首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

mysql数据库中插入重复数据修改解决方法

2012-03-18 
mysql数据库中插入重复数据修改这只是个留言板的一部分,但是在显示留言板的页上一刷新,就出现大量的重复字

mysql数据库中插入重复数据修改
这只是个留言板的一部分,但是在显示留言板的页上一刷新,就出现大量的重复字段,怎么修改呀。
登录界面代码如下:
<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.sql.*"%>
<HTML> 
<HEAD> 
<TITLE> 留言板 </TITLE> 
</HEAD> 
<BODY>
<TABLE width="90%" align="center" border=1 cellspacing="0" cellpadding="0" bordercolordark="#88a6dd" bordercolorlight="#88a6dd"> 
<TR> 
<TD align="center" bgcolor="#88a6dd">访客留言板</TD> 
</TR> 
<TR> 
<TD><TABLE align="center" border=1 cellspacing="0" cellpadding="0" bordercolordark="#88a6dd" bordercolorlight="#88a6dd"> 
<FORM method="post" ACTION="acc_message.jsp" name="form1"> 
<TR> 
<TD>姓名:</TD> 
<TD bgcolor="#88a6dd"><input type="text" name="name" size=25></TD> 
</TR> 
<TR> 
<TD bgcolor="#88a6dd">E-mail:</TD> 
<TD bgcolor="#88a6dd"><input type="text" name="mail" size=25></TD> 
</TR> 
<TR> 
<TD>主题:</TD> 
<TD bgcolor="#88a6dd"><input type="text" name="title" size=25></TD> 
</TR> 
<TR> 
<TD valign="top" bgcolor="#88a6dd">留言:</TD> 
<TD><textarea name="content" rows=7 cols=25></textarea></TD> 
</TR> 
<TR> 
<TD colspan=3><TABLE align="center" width="100%" cellspacing="0" cellpadding="0" bordercolordark="#88a6dd" bordercolorlight="#88a6dd"> 
<TR> 
<TD align="center" bgcolor="#88a6dd"><input type="submit" value="提交留言"></TD> 
<TD align="center"><a href="view_message.jsp"><font size=2>查看留言</font></a></TD> 
<TD align="center" bgcolor="#88a6dd"><input type="reset" value="重新填写"></TD> 
</TR> 
</TABLE></TD> 
</TR> 
</FORM> 
</TABLE></TD> 
</TR> 
</TABLE> 
</BODY> 
</HTML> 
下面的一个是插入数据代码:
<%@ page contentType="text/html;charset=GBK"%>
<%@ page import="java.sql.*"%>
<html>
<head>
<title>验证信息</title>
</head>
<body>
<%
request.setCharacterEncoding("GBK");
Connection con=null;
String url="jdbc:mysql://localhost:3306/bbs";
String name=request.getParameter("name");
name=new String(name.getBytes("ISO-8859-1"),"GBK");
String mail=request.getParameter("mail");
String title=request.getParameter("title");
title=new String(title.getBytes("ISO-8859-1"),"GBK");
String content=request.getParameter("content");
content=new String(content.getBytes("ISO-8859-1"),"GBK");
java.util.Date date=new java.util.Date();
String datetime=new Timestamp(date.getTime()).toString();
System.out.println(datetime);
{
String sql="insert into liuyan(name,mail,title,datetime,content) values('"+name+"','"+mail+"','"+title+"','"+datetime+"','"+content+"')";


try
{
Class.forName("com.mysql.jdbc.Driver"); //加载mysql驱动
con=DriverManager.getConnection(url,"root","admin"); //连接数据库
PreparedStatement stm=con.prepareStatement(sql);
  stm.executeUpdate(sql);
}catch(SQLException e){
System.out.println("数据库操作出现问题!");
con.close();
}
catch(Exception e1){
System.out.println("数据库更新出现问题!");
}
System.out.println(sql);
}
System.out.println(name);
%>
<jsp:forward page="view_message.jsp"/>
</body>
</html>

代码是完全没有问题的,但是只要一刷新:
也就是一段留言被多次打印出来了。
求高手帮忙修改一下。

[解决办法]
有个改进方法
在提交页面加个隐藏域,类似一个戳,值可以是时间+随机数,这个戳也作为表的一个字段
增加的时候先去查有没有这个戳的记录,有就不添加,没有就添加

热点排行