zoukankan      html  css  js  c++  java
  • .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呢要一层一层的分开取值,绕得晕乎乎的,小菜一只,请多多指教

  • 相关阅读:
    jvm参数陷阱
    concurrent mode failure
    17.Quick QML-SpinBox
    16.Quick QML-ButtonGroup、RadioButton、CheckBox
    15.Quick QML-TextEdit和TextArea
    14.Quick QML-TextInput和TextField详解
    13.Quick QML-RowLayout、ColumnLayout、GridLayout布局管理器介绍、并通过GridLayout设计的简易网站导航界面
    9.qml-property自定义属性
    macOS 系统安装Maven教程
    macOS系统上 为Github 托管项目的访问添加SSH keys
  • 原文地址:https://www.cnblogs.com/ZxtIsCnblogs/p/7683290.html
Copyright © 2011-2022 走看看