asp.net身份证号码校验方法
2014-06-19 13:19
330 查看
#region 身份证校验 /// <summary> /// 身份证校验 /// </summary> /// <param name="Code">身份证号码</param> /// <returns></returns> [WebMethod] public string CheckCode(string Code) { try { Code = Code.Trim();//去除首尾空格 if (Code.Length == 18) { string AreaCode = Code.Substring(0, 6);//获取地区码(前6位是地区码) string BirthDate = Code.Substring(6, 8);//获取出生日期(中间8位是出生年月日) //string IdCode = Code.Substring(0,17); SqlHerper sh = new SqlHerper(); string CheckArea = sh.ExeScalar(string.Format("select count(*) from Area where ID='{0}'",AreaCode)); //需要查询地区代码库,可从国家统计局获取到全国地区代码 if (CheckArea == "" || Convert.ToInt32(CheckArea) <= 0) //验证地区码 { return JsonConvert.SerializeObject("-1"); //地区码不正确 } else { BirthDate = BirthDate.Insert(4, "-").Insert(7, "-"); DateTime time=new DateTime(); if (!DateTime.TryParse(BirthDate, out time)) //校验生日是否正确 { return JsonConvert.SerializeObject("-2"); //生日格式不正确 } else { if (getValidateCode(Code.Substring(0, 17)).ToLower() != Code.Substring(17, 1).ToLower()) //检验最后一位校验码是否正确 { return JsonConvert.SerializeObject("-3"); //校验码不正确 } else { return JsonConvert.SerializeObject("1"); } } } } else { return JsonConvert.SerializeObject("-4"); //身份证号码长度不为18位 } } catch { return JsonConvert.SerializeObject("-5"); //未知异常 } } #endregion #region 根据身份证前17数获取身份证最后一位校验码 /// <summary> /// 根据身份证前17数获取身份证最后一位校验码 /// </summary> /// <param name="id17">前17位数</param> /// <returns>返回最后一位校验码</returns> public string getValidateCode(String id17) { string[] arrVarifyCode = ("1,0,x,9,8,7,6,5,4,3,2").Split(','); string[] Wi = ("7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2").Split(','); char[] Ai = id17.ToCharArray(); int sum = 0; for (int i = 0; i < 17; i++) { sum += int.Parse(Wi[i]) * int.Parse(Ai[i].ToString()); } int y = -1; Math.DivRem(sum, 11, out y); string a = arrVarifyCode[y]; return arrVarifyCode[y]; } #endregion public class SqlHerper { private static string connStr = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\rudy_lai\Desktop\新建文件夹\WcfService1\WcfService1\DB\Area.accdb"; //private static string connStr = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=DB\Area.accdb"; OleDbConnection conn = null; /// <summary> /// 返回查询首行首列 /// </summary> /// <param name="SqlStr">查询语句</param> /// <returns></returns> public string ExeScalar(string SqlStr) { using (conn = new OleDbConnection(connStr)) { try { conn.Open(); OleDbCommand cmd = new OleDbCommand(SqlStr, conn); return cmd.ExecuteScalar().ToString(); } catch { return ""; } finally { conn.Close(); conn.Dispose(); } } } }
相关文章推荐
- 浅谈在ASP.NET中数据有效性校验的方法
- asp.net 中国身份证号码验证代码 非正则
- 浅谈在ASP.NET中数据有效性校验的方法!
- ASP.NET中常用的数据有效性校验的方法 (转)
- 浅谈在ASP.NET中数据有效性校验的方法
- javascript或asp实现的判断身份证号码是否正确两种验证方法
- 浅谈在ASP.NET中数据有效性校验的方法
- 浅谈在ASP.NET中数据有效性校验的方法
- asp.net身份证号码验证
- [转贴]浅谈在ASP.NET中数据有效性校验的方法
- 浅谈在ASP.NET中数据有效性校验的方法
- 浅谈在ASP.NET中数据有效性校验的方法
- 二代身份证号码校验方法
- 浅谈在ASP.NET中数据有效性校验的方法
- 浅谈在ASP.NET中数据有效性校验的方法
- 判断身份证号码是否正确javascript、asp两种验证方法
- asp.net 导出Excel时 身份证号码的正确导出
- asp.net身份证号码验证(转载)
- 浅谈在ASP.NET中数据有效性校验的方法