2012-08-24 54 views
0

當提交表單時,我需要檢查是否存在重複項。如果是,則停止提交表單並允許該人員再次編輯該字段。我以前從來沒有真正使用ajax,但是我已經讀過這樣的東西,這將是最好的使用。我也不能使用PHP,但可以使用JavaScript和ASP。現在,我可以檢查數據庫,如果重複的值已經通過執行以下操作存在:使用Javascript,ASP.NET和AJAX防止重複數據庫輸入

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"/> 
+3

使用合適的工作的正確工具:'ALTER TABLE onLeave ADD CONSTAINT uc_leave UNIQUE(personalID,起始日期,結束日期,開始時間,結束時間,LeaveType)' – asawyer

回答

2

我同意來自@asawyer的評論。更好的方法是將唯一約束添加到表中並讓其失敗。在代碼後面,您只需捕捉異常並將錯誤顯示給用戶。您可以具體捕獲Violation of unique constraint錯誤並採取相應措施。對於任何其他錯誤,您必須決定要做什麼。

以上方法有幾個好處IMO:

  1. 少了一個DB調用。
  2. 由於上述原因應該執行得更好,並且不需要進行ajax調用
  3. 它在數據庫級別強制執行數據完整性,這是一件好事。
+0

@asawyer如果他使用了類似的東西,你的腳本,是的,這將違反獨特的約束。如果他創建了一個主鍵,那麼這將是「違反主鍵約束」。我認爲他得到了重點,但我仍然更新了我的答案。謝謝。 – Icarus

+0

太棒了!感謝球員對此的洞察力! – Dave