.NET采集数据,放入数据库总结

第一次做采集Json的还简单一些但是XML的简直了.........

JSON

  1 //采集数据
  2         public string GetBetRecordToRepository()//随便你返回什么
  3         {
  4             try
  5             {
  6                 DateTime startTime = DateTime.Now;
  7                 var Date = startTime;                             //日期中的时间段
  8                 string playDate = Date.ToString("yyyy-MM-ddTHH:mm:ss");//开始时间,设置时间格式
  9                 Date = Date.AddMinutes(-15);//时间间隔,有什么比限制15分钟采集一次,调试的时候返回空更丧的呢!!
 10                 string endDate = Date.ToString("yyyy-MM-ddTHH:mm:ss");//结束时间
 11                 int k = 0;//因为我是15分钟采集,所以设置变量确定时间
 12                 for (int j = 0; j < Time;)//Time是采集时间比如为48,那就是采集当前时间到昨天的当前时间
 13                 {
 14                     k += 1;
 15                     if (k == 4)//一小时
 16                     {
 17                         j += 1;
 18                         k = 0;
 19                     }
 20  23                     //    //日期
 24                     //    var Date = DateTime.Now.AddHours(Time); //打注释的是另一种方法使用do{}while()循环,注意我在写这个的时候为了区分所以do是从当前时间往回采集所以使用do应改为-15 25                     //var NowDate = DateTime.Now;
 26                     ////日期中的时间段
 27                     //string playDate = Date.ToString("yyyy-MM-ddTHH:mm:ss");//开始时间
 28                     //Date = Date.AddMinutes(15);
 29                     //string endDate = Date.ToString("yyyy-MM-ddTHH:mm:ss");//结束时间
 30                     //do
 31                     //{
 32                     //设置路径获取值
 33                     string PostUrl = "采集路径";
 34                     string JsonStr = "采集参数";
 35                     string retData = string.Empty;
 36                     retData = UtilsHelper.HttpWebRequest(PostUrl, JsonStr, Encoding.UTF8, contentType: "application/json", method: "POST");//请求服务器,详细请看我另一篇(.NET接入接口 37                     //判断返回值是否为空 38                     if (retData != "[]")//判断根据自己的判断
 39                     {
 40                         //实例化表
 41 
 42                         string Sql = string.Empty;
 43                         string St = retData.ToString();
 44                         var C = from c in St
 45                                 where
 46                                     c == '}'
 47                                 select c;
 48                         int Count = C.Count();//获取返回Json个数
 49                         string S = retData;
 50                         int index1, index2;//记录Json开始和结束位置
 51                         string Str;
 52                         //循环取值
 53                         for (int i = 0; i < Count; i++)
 54                         {
 55                             index1 = S.IndexOf("{");
 56                             index2 = S.IndexOf("}");
 57                             Str = S.Substring(index1, index2 - i);
 58                             S = S.Replace(Str, "");
 59                             JObject jo = (JObject)JsonConvert.DeserializeObject(Str);//将返回的字符串转换为Jaon格式
 60                             Table Bmodel = new Table();//实例化一个表
                    Bmodel.id=Convert.toInt32(jo["id"].tostring());
62 Bmodel.username = jo["name"].ToString();
                   ............................................
93 //生成SQl语句,查看是否已经有该数据 94 Sql = "select count(*) from Table where ID='" + Bmodel.id + "'"; 95 if (Convert.ToInt32(DbHelperSQL.GetSingle(Sql)) == 0) 96 { 97 Sql = "INSERT INTO Table(ID,username,....." + 99 "VALUES("+Bmodel.id+",'"+Bmodel.username+"',......)";//注意将值的类型与数据库对应 104 } 105 else 106 { 107 Sql = "UPDATE AGBetOrder SET username='" + Bmodel.username + "',...... where ID=" + Bmodel.id ; 108 }110 //执行SQl语句 111 DbHelperSQL.ExecuteSql(Sql); 112 } 113 } 114 //重新获取日期中的下一个时间段 115 playDate = Date.ToString("yyyy-MM-ddTHH:mm:ss");//开始时间 116 Date = Date.AddMinutes(-15); 117 endDate = Date.ToString("yyyy-MM-ddTHH:mm:ss");//结束时间 118 119 //} while (Date < NowDate); 120 //return MSMPRetMsgFactory.SucceedMsg(); 121 } 122 } 123 catch (Exception ex) 124 { 125 LogHelper.WriteErrorLog(ex);//抓取错误 126 return "NO"; 127 } 128 return "OK"; 129 }

XML  1 public string GetBetRecordToRepository  2 {  3 try

  4             {
  5                 DateTime startTime = DateTime.Now;//当前时间
  6                 for (int i = 0; i < Time; i += 4)//时间段
  7                 {
  8                     startTime = startTime.AddHours(-4);
  9                     DateTime endTime = startTime.AddHours(4);
 10 
 11                     string url = "采集地址";
 12                     string retData = UtilsHelper.HttpWebRequest(url, null, Encoding.UTF8);
              XmlDocument a = new XmlDocument(); 23 a.LoadXml(retData); 24 XmlNode inputNode; 25 string SQL_base; 26 string Str = retData; 27 string r = Str.Replace("normal_wager_", ""); 28 int count = ((Str.Length - r.Length) / 13) / 2; 29 30 if (retData.IndexOf("success") > 0) 31 { 32 //创建一个实体类 33 STable Smodel = new STable(); 34 //创建一个XmlDocument类型数据 35 XmlDocument XmlD = new XmlDocument(); 36 XmlD.LoadXml(retData); 37 inputNode = XmlD.SelectSingleNode("success"); 38 //获取节点,将节点转换为元素,便于得到节点的属性值 39 XmlNodeList XnA = inputNode.ChildNodes;//1 40 XmlNodeList XnB = XnA.Item(1).ChildNodes; 41 //取值放入实体类 42 Smodel.request_tid = Convert.ToInt32(XnB.Item(0).InnerText);//搜索起点 43 Smodel.latest_tid = XnB.Item(1).InnerText;//搜索起点 44 //获取节点,将节点转换为元素,便于得到节点的属性值 46 XnB = XnA.Item(4).ChildNodes; 47 XmlNodeList XnC = XnB.Item(0).ChildNodes;//3.1 48 //取值放入实体类 49 Smodel.normal_parlay = XnC.Item(0).InnerText;//普通注单/过关注单 50 for (int j = 1; j <= count; j++) 51 { 52 XnB = XnA.Item(2).ChildNodes; 53 //取值放入实体类 54 Smodel.total_wager = Convert.ToInt32(XnB.Item(1).InnerText) + j - 1;//注单总数 55 56 //创建一个实体类 57 STable Smodel2 = new STable(); 58 59 //获取节点,将节点转换为元素,便于得到节点的属性值 60 XmlNodeList XnD = XnC.Item(j).ChildNodes;//3.2 61 //取值放入实体类 62 Smodel2.play_type = XnD.Item(0).InnerText;//游戏编号
                    .......................................................
101 //生成Sql语句 102 SQL_base = "SELECT COUNT(*) from STable WHERE transactionid='" + Smodel2.transactionid + "'";//查询是否已经有这一条记录 103 if (Convert.ToInt32(DbHelperSQL.GetSingle(SQL_base)) == 1) 104 SQL_base = "UPDATE STable set request_tid=" + Smodel.request_tid + ",............."; 105 else 106 SQL_base = "insert into STable(................)VALUES(............)";108 //执行SQl语句 109 DbHelperSQL.ExecuteSql(SQL_base); 110 } 111 } 112 } 113 } 114 catch (Exception err) 115 { 116 LogHelper.WriteErrorLog(err); 117 } 118 return MSMPRetMsgFactory.SucceedMsg(); 119 }

PS:Json呢是直接就键值对取值,XML呢要一层一层的分开取值,绕得晕乎乎的,小菜一只,请多多指教

原文地址:https://www.cnblogs.com/ZxtIsCnblogs/p/7683290.html