有没有简单的方法防止网页刷新等导致数据重复提交到数据库,求详细代码,谢谢!!!
新手编写,很多不懂,现在自己想到的一个方法就是自己表单传递的数据与数据库以插入的数据查询出来做对比,对比一样的就return掉页面,但是好像完全不行,运行的时候是rs.g...
新手编写,很多不懂,现在自己想到的一个方法就是自己表单传递的数据与数据库以插入的数据查询出来做对比,对比一样的就return掉页面,但是好像完全不行,运行的时候是 rs.getString(1)那里报错,但可能其他地方也有问题,求大佬帮助!!!下面是我写的代码
<%
request.setCharacterEncoding("UTF-8");
String shr = request.getParameter("shr");
String lxfs = request.getParameter("lxfs");
String szdq = request.getParameter("szdq");
String xxdz = request.getParameter("xxdz");
String gmsl = request.getParameter("amount");
String fkje = request.getParameter("fkje");
String mjly = request.getParameter("mjly");
Connection conn=null;
Statement stat=null;
//加载数据库驱动类
Class.forName("com.mysql.jdbc.Driver").newInstance();
//数据库连接URL,包含用户和密码
String url="jdbc:mysql://localhost:3306/userinfo?user=root&password=root";
//获得一个与数据库的连接对象
conn = DriverManager.getConnection(url);
//创建一个Statement对象,可以用来执行sql语句
stat=conn.createStatement();
//编写一条sql语句
String sql_s="SELECT liuyan FROM a_user WHERE liuyan='"+mjly+"'";
ResultSet rs = stat.executeQuery(sql_s);
String str2 = rs.getString(1);
if(mjly.equals(str2)){
out.print("请勿重复提交,谢谢");
rs.close();
stat.close();
conn.close();
return;
}else{
String sql="insert into b_user(a_user,phone,shengfen,address,num,money,liuyan)values('"+shr+"','"+lxfs+"','"+szdq+"','"+xxdz+"','"+gmsl+"','"+fkje+"','"+mjly+"')";
if(stat.executeUpdate(sql)==1)
out.print("");
else
out.print("抱歉!发生错误,订单提交失败,请重新打开页面提交");
if(stat!=null)
stat.close();
if(conn!=null)
conn.close();
}
%> 展开
<%
request.setCharacterEncoding("UTF-8");
String shr = request.getParameter("shr");
String lxfs = request.getParameter("lxfs");
String szdq = request.getParameter("szdq");
String xxdz = request.getParameter("xxdz");
String gmsl = request.getParameter("amount");
String fkje = request.getParameter("fkje");
String mjly = request.getParameter("mjly");
Connection conn=null;
Statement stat=null;
//加载数据库驱动类
Class.forName("com.mysql.jdbc.Driver").newInstance();
//数据库连接URL,包含用户和密码
String url="jdbc:mysql://localhost:3306/userinfo?user=root&password=root";
//获得一个与数据库的连接对象
conn = DriverManager.getConnection(url);
//创建一个Statement对象,可以用来执行sql语句
stat=conn.createStatement();
//编写一条sql语句
String sql_s="SELECT liuyan FROM a_user WHERE liuyan='"+mjly+"'";
ResultSet rs = stat.executeQuery(sql_s);
String str2 = rs.getString(1);
if(mjly.equals(str2)){
out.print("请勿重复提交,谢谢");
rs.close();
stat.close();
conn.close();
return;
}else{
String sql="insert into b_user(a_user,phone,shengfen,address,num,money,liuyan)values('"+shr+"','"+lxfs+"','"+szdq+"','"+xxdz+"','"+gmsl+"','"+fkje+"','"+mjly+"')";
if(stat.executeUpdate(sql)==1)
out.print("");
else
out.print("抱歉!发生错误,订单提交失败,请重新打开页面提交");
if(stat!=null)
stat.close();
if(conn!=null)
conn.close();
}
%> 展开
3个回答
展开全部
使用ajax,而不是表单,就会解决这个问题.(刷新重复提交"等")
假设你用jq
$.post("test.php", { name: "John", time: "2pm" } , res=>{console.log(res)});
假设你用axios
axios.post('test.php',{ name: "John", time: "2pm" } ).then(res=>{console.log(response)})
假设你用jq
$.post("test.php", { name: "John", time: "2pm" } , res=>{console.log(res)});
假设你用axios
axios.post('test.php',{ name: "John", time: "2pm" } ).then(res=>{console.log(response)})
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你在添加之前,先查询一下数据库,如果存在这条记录就不添加,就是执行SQL的count函数,判断返回值是否是1,如果是1你就不提交
追问
那要该怎么写(详细代码)?
追答
你查询应该会写吧,就是将你网页上那几个文本框的值获取到传入到SQL语句里面,后台专门(Java类里面),我给你看一个后台的例子:
public EmployeeBean SearchUserByID(Integer id){
EmployeeBean ea = null;
ResultSet rs = null;
PreparedStatement ps = null;
Connection con = null;
sql = "select * from Employee where ID=?";
try {
con = BaseDAO.GetConnection();
ps = con.prepareStatement(sql);
ps.setInt(1, id);
rs = ps.executeQuery();
if (rs.next()) {
ea = new EmployeeBean();
ea.setId(rs.getInt(1));
ea.setDerpartId(rs.getInt(2));
ea.setName(rs.getString(3));
ea.setPassword(rs.getString(4));
}
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}finally{
BaseDAO.close(rs, ps, con);
}
return ea;
}
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |