Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/460.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Javascript、ASP.NET和AJAX防止重复的数据库条目_Javascript_Asp.net_Ajax - Fatal编程技术网

使用Javascript、ASP.NET和AJAX防止重复的数据库条目

使用Javascript、ASP.NET和AJAX防止重复的数据库条目,javascript,asp.net,ajax,Javascript,Asp.net,Ajax,提交表单时,我需要检查是否已经存在副本。如果是,它将停止表单的提交,并允许用户再次编辑字段。我以前从未真正使用过ajax,但我读到过这样的东西,最好使用它。我也不会使用PHP,但可以使用javascript和asp。现在,我可以通过执行以下操作检查数据库是否存在重复值: var SQL = " SELECT COUNT(LeaveID) AS Dup, personalID, StartDate, EndDate, StartTime, EndTime, LeaveType"; S

提交表单时,我需要检查是否已经存在副本。如果是,它将停止表单的提交,并允许用户再次编辑字段。我以前从未真正使用过ajax,但我读到过这样的东西,最好使用它。我也不会使用PHP,但可以使用javascript和asp。现在,我可以通过执行以下操作检查数据库是否存在重复值:

var  SQL =  " SELECT COUNT(LeaveID) AS Dup, personalID, StartDate, EndDate, StartTime, EndTime, LeaveType";
     SQL += " FROM onLeave";
     SQL += " WHERE personalID = " + ipersonalID;
     SQL += " GROUP BY personalID, StartDate, EndDate, StartTime, EndTime, LeaveType";
     SQL += " HAVING COUNT(LeaveID) > 1";
     SQL += " ORDER BY StartDate DESC";
var rs = Connection.Execute(SQL);

writeTable(rs)
writetable(rs)只是将数据输出到html表中,ipersonalID是查看页面的人的当前ID。提交只是一个简单的输入,如下所示:

<input type="button" name="btnSubmit" value="Submit" onclick="submitSkedChange()" id="btnSubmit"/>

我同意@asawyer的评论。更好的方法是向表中添加唯一约束,然后让它失败。在代码背后,您只需捕获异常并向用户显示错误。您可以专门捕获违反唯一约束的
错误,并相应地采取行动。对于任何其他错误,您必须决定要做什么

上述方法有几个好处:

  • 少一个DB呼叫
  • 由于上述原因,并且不必进行ajax调用,因此性能应该会更好
  • 它在DB级别强制执行数据完整性,这是一件好事
    为正确的工作使用正确的工具:
    ALTER TABLE onLeave ADD constant uc_leave UNIQUE(personalID、StartDate、EndDate、StartTime、EndTime、LeaveType)
    @asawyer如果他使用与您的脚本类似的内容,是的,这将违反UNIQUE约束。如果他创建一个主键,那么这将是违反主键约束的
    。我想他明白了,但我还是更新了我的答案。谢谢,太棒了!感谢大家对这方面的见解!