字段的重复校验问题
字段的重复检验问题是我们在开发过程中会经常遇到的问题,一般常见的做法是AJAX请求校验,这种校验方式便捷简单,一般情况下不会存在什么问题。列一个例子
$.ajax({ type: "post", //发送方式 url: "/Home/AjaxCheckRegisterID", //发送请求的URL字符串 dataType: "json", //预期服务器返回的数据类型 xml, html, text, json, jsonp, script async: false, //异步请求 timeout: 30000, //超时时间 毫秒
cache:false, //缓存data: { CustomerID: $String.Trim(reg_name.val()) }, //发送的数据 beforeSend: function (XMLHttpRequest) { //请求之前
//do somethings
}, error: function (XMLHttpRequest, textStatus, errorThrown) { //请求出错时
//do somethings }, success: function (data) { //请求成功时 //do somethings }, complete: function (XMLHttpRequest, textStatus) { //请求完成之后(不论成功或失败)
//do somethings
}
});
这样的调用是不是很舒适、方便,这样的方式可以满足一般情况下的需求
在不方便使用AJAX请求处理的时候我们就需要直接处理数据库信息来判断是否重复。
public bool CheckDomesticMerchantCode(DomesticVendorInfo domesticMerchantCode) { DataCommand command = DataCommandManager.GetDataCommand("CheckDomesticMerchantCode"); command.SetParameterValue("@DomesticMerchantCode", domesticMerchantCode.DomesticMerchantCode); DataTable result = command.ExecuteDataTable(); bool isExit = true; if (result == null || result.Rows.Count == 0) { return true; } else { for (int i = 0; i < result.Rows.Count; i++) { if (result.Rows[i][0].ToString().Trim() == domesticMerchantCode.SysNo.ToString() && result.Rows[i][1].ToString().Trim() == domesticMerchantCode.DomesticMerchantCode.Trim())//无修改 直接保存的情况 { return true; } else if (result.Rows[i][0].ToString().Trim() != domesticMerchantCode.SysNo.ToString() && result.Rows[i][1].ToString().Trim() == domesticMerchantCode.DomesticMerchantCode.Trim())// 当前要存储的code 已经在数据库中存在 { isExit = false; } } } return isExit; }
上边的方法适用的场景是在页面保存信息做唯一验证的时候,根据当前传过来的值来做判断是否已经存在(注意这里的坑,直接保存你的时候要考虑)这里边不止要考虑你要保存的字段,同时要考虑当前记录的主键,主要是确定是不是当前记录是不是有修改,如果主键是当前的主键,code相等既没有修改可以直接保存,code不相等的时候我们要根据新的code来查询当前code 是否已经存在与DB 中 返回值 准确来讲 不是当前code 是否已经存储在DB 中,而是返回当前记录是否能够做保存操作。
记录点点滴滴