.net第三方数据库物理卡号同步功能实现
本地数据库用的是Oracle,第三方数据库是SQL Server,连接字符串保存在web.config里面。
第三方数据库为增量,每次读取要记录读取的最大位置。我是保存在本地txt文件里面。
1
//保存的路径
string filepath = Server.MapPath("~/temp/TestTxt.txt"); 2 //读取上次记录 3 //判断txt文件是否存在 4 string strOpen = ""; 5 if (!File.Exists(filepath)) 6 { 7 //创建txt 8 StreamWriter strmsave = new StreamWriter(filepath, true, System.Text.Encoding.GetEncoding("gb2312")); 9 strmsave.Write("0"); 10 strmsave.Close(); 11 StreamReader strmopen = new StreamReader(filepath, System.Text.Encoding.GetEncoding("gb2312")); 12 strOpen = strmopen.ReadToEnd(); 13 strmopen.Close(); 14 } 15 else 16 { 17 StreamReader strmopen = new StreamReader(filepath, System.Text.Encoding.GetEncoding("gb2312")); 18 strOpen = strmopen.ReadToEnd(); 19 strmopen.Close(); 20 }
int maxidnumber = 0;
if (!string.IsNullOrEmpty(strOpen))
{
maxidnumber = Convert.ToInt32(strOpen);
}
1 string sql = "select top " + System.Configuration.ConfigurationManager.AppSettings["ReadCount"] + " * from User_Infor_Message where idnumber>" + maxidnumber + " order by idnumber"; 2 DataTable tab1 = DBHelper.GetDataSetBySql(sql).Tables[0]; 3 int tempid = 0; 4 foreach (DataRow item in tab1.Rows) 5 { 6 if (Convert.ToInt32(item["idnumber"]) > maxidnumber) 7 { 8 tempid = Convert.ToInt32(item["idnumber"]); 9 } 10 if (tab.Rows.Count > 0) 11 { 12 string MessageType = item["MessageType"].ToString();//数据状态 13 string outid = item["IDSERIAL"].ToString();//证件号,匹配字段 14 string cardnumber = item["CARDID"].ToString();//物理卡号 15 string strSql = ""; 16 if (MessageType != "0" || MessageType != "2") 17 { 18 DataRow[] rows = tab.Select("onecard='" + outid + "'"); 19 if (rows.Length > 0) 20 { 21 string info_id = rows[0][0].ToString();//获取用户id 22 //更新数据 23 strSql = "update sub_file_relation set cardnumber='" + cardnumber + "' where info_id='" + info_id + "'"; 24 cmd.CommandText = strSql; 25 cmd.ExecuteNonQuery(); 26 } 27 else 28 { 29 //新增数据 30 } 31 } 32 } 33 } 34 if (tab1.Rows.Count > 0) 35 { 36 maxidnumber = Convert.ToInt32(tempid); 37 //写入记录数据 38 StreamWriter strmsave1 = new StreamWriter(filepath, false, System.Text.Encoding.GetEncoding("gb2312")); 39 strmsave1.Write(maxidnumber); 40 strmsave1.Close(); 41 } 42 //ClientScript.RegisterStartupScript(this.GetType(), "123", "<script>alert('数据同步完成')</script>"); 43 trans.Commit();
更新数据的主要代码
本地数据库用的是Oracle,第三方数据库是SQL Server,连接字符串保存在web.config里面。