使用Javascript、ASP.NET和AJAX防止重复的数据库条目
提交表单时,我需要检查是否已经存在副本。如果是,它将停止表单的提交,并允许用户再次编辑字段。我以前从未真正使用过ajax,但我读到过这样的东西,最好使用它。我也不会使用PHP,但可以使用javascript和asp。现在,我可以通过执行以下操作检查数据库是否存在重复值:使用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
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约束。如果他创建一个主键,那么这将是违反主键约束的。我想他明白了,但我还是更新了我的答案。谢谢,太棒了!感谢大家对这方面的见解!