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

JSON

 //采集数据
public string GetBetRecordToRepository()//随便你返回什么
{
try
{
DateTime startTime = DateTime.Now;
var Date = startTime; //日期中的时间段
string playDate = Date.ToString("yyyy-MM-ddTHH:mm:ss");//开始时间,设置时间格式
Date = Date.AddMinutes(-);//时间间隔,有什么比限制15分钟采集一次,调试的时候返回空更丧的呢!!
string endDate = Date.ToString("yyyy-MM-ddTHH:mm:ss");//结束时间
int k = ;//因为我是15分钟采集,所以设置变量确定时间
for (int j = ; j < Time;)//Time是采集时间比如为48,那就是采集当前时间到昨天的当前时间
{
k += ;
if (k == )//一小时
{
j += ;
k = ;
}
// //日期
// var Date = DateTime.Now.AddHours(Time); //打注释的是另一种方法使用do{}while()循环,注意我在写这个的时候为了区分所以do是从当前时间往回采集所以使用do应改为-15 //var NowDate = DateTime.Now;
////日期中的时间段
//string playDate = Date.ToString("yyyy-MM-ddTHH:mm:ss");//开始时间
//Date = Date.AddMinutes(15);
//string endDate = Date.ToString("yyyy-MM-ddTHH:mm:ss");//结束时间
//do
//{
//设置路径获取值
string PostUrl = "采集路径";
string JsonStr = "采集参数";
string retData = string.Empty;
retData = UtilsHelper.HttpWebRequest(PostUrl, JsonStr, Encoding.UTF8, contentType: "application/json", method: "POST");//请求服务器,详细请看我另一篇(.NET接入接口) //判断返回值是否为空 if (retData != "[]")//判断根据自己的判断
                     {
//实例化表 string Sql = string.Empty;
string St = retData.ToString();
var C = from c in St
where
c == '}'
select c;
int Count = C.Count();//获取返回Json个数
string S = retData;
int index1, index2;//记录Json开始和结束位置
string Str;
//循环取值
for (int i = ; i < Count; i++)
{
index1 = S.IndexOf("{");
index2 = S.IndexOf("}");
Str = S.Substring(index1, index2 - i);
S = S.Replace(Str, "");
JObject jo = (JObject)JsonConvert.DeserializeObject(Str);//将返回的字符串转换为Jaon格式
Table Bmodel = new Table();//实例化一个表
                    Bmodel.id=Convert.toInt32(jo["id"].tostring()); Bmodel.username = jo["name"].ToString();
                   ............................................
//生成SQl语句,查看是否已经有该数据
Sql = "select count(*) from Table where ID='" + Bmodel.id + "'";
if (Convert.ToInt32(DbHelperSQL.GetSingle(Sql)) == )
{
Sql = "INSERT INTO Table(ID,username,....." +
"VALUES("+Bmodel.id+",'"+Bmodel.username+"',......)";//注意将值的类型与数据库对应
}
else
{
Sql = "UPDATE AGBetOrder SET username='" + Bmodel.username + "',...... where ID=" + Bmodel.id ;
} //执行SQl语句
DbHelperSQL.ExecuteSql(Sql);
}
}
//重新获取日期中的下一个时间段
playDate = Date.ToString("yyyy-MM-ddTHH:mm:ss");//开始时间
Date = Date.AddMinutes(-);
endDate = Date.ToString("yyyy-MM-ddTHH:mm:ss");//结束时间 //} while (Date < NowDate);
//return MSMPRetMsgFactory.SucceedMsg();
}
}
catch (Exception ex)
{
LogHelper.WriteErrorLog(ex);//抓取错误
return "NO";
}
return "OK";
}

XML  1 public string GetBetRecordToRepository  2 {  3 try

             {
DateTime startTime = DateTime.Now;//当前时间
for (int i = ; i < Time; i += )//时间段
{
startTime = startTime.AddHours(-);
DateTime endTime = startTime.AddHours(); string url = "采集地址";
string retData = UtilsHelper.HttpWebRequest(url, null, Encoding.UTF8);
              XmlDocument a = new XmlDocument();
a.LoadXml(retData);
XmlNode inputNode;
string SQL_base;
string Str = retData;
string r = Str.Replace("normal_wager_", "");
int count = ((Str.Length - r.Length) / ) / ; if (retData.IndexOf("success") > )
{
//创建一个实体类
STable Smodel = new STable();
//创建一个XmlDocument类型数据
XmlDocument XmlD = new XmlDocument();
XmlD.LoadXml(retData);
inputNode = XmlD.SelectSingleNode("success");
//获取节点,将节点转换为元素,便于得到节点的属性值
XmlNodeList XnA = inputNode.ChildNodes;//1
XmlNodeList XnB = XnA.Item().ChildNodes;
//取值放入实体类
Smodel.request_tid = Convert.ToInt32(XnB.Item().InnerText);//搜索起点
Smodel.latest_tid = XnB.Item().InnerText;//搜索起点
//获取节点,将节点转换为元素,便于得到节点的属性值
XnB = XnA.Item().ChildNodes;
XmlNodeList XnC = XnB.Item().ChildNodes;//3.1
//取值放入实体类
Smodel.normal_parlay = XnC.Item().InnerText;//普通注单/过关注单
for (int j = ; j <= count; j++)
{
XnB = XnA.Item().ChildNodes;
//取值放入实体类
Smodel.total_wager = Convert.ToInt32(XnB.Item().InnerText) + j - ;//注单总数 //创建一个实体类
STable Smodel2 = new STable(); //获取节点,将节点转换为元素,便于得到节点的属性值
XmlNodeList XnD = XnC.Item(j).ChildNodes;//3.2
//取值放入实体类
Smodel2.play_type = XnD.Item().InnerText;//游戏编号
                    .......................................................
//生成Sql语句
SQL_base = "SELECT COUNT(*) from STable WHERE transactionid='" + Smodel2.transactionid + "'";//查询是否已经有这一条记录
if (Convert.ToInt32(DbHelperSQL.GetSingle(SQL_base)) == )
SQL_base = "UPDATE STable set request_tid=" + Smodel.request_tid + ",.............";
else
SQL_base = "insert into STable(................)VALUES(............)"; //执行SQl语句
DbHelperSQL.ExecuteSql(SQL_base);
}
}
}
}
catch (Exception err)
{
LogHelper.WriteErrorLog(err);
}
return MSMPRetMsgFactory.SucceedMsg();
}

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

.NET采集数据,放入数据库总结的更多相关文章

  1. php批量上传图片并把图片名放入数据库

    前几天工作中要做这样一个功能,有八百多个系统 生成的会员:给这八百多个系统会员上传图片:然后把图片名放入数据库. 第一步: 第一步肯定是首先把图片上传到对应的图片目录下,直接用框架中已经有的上传类: ...

  2. C语言:把分数最低的学生数据放入数组b所指的数组中,-从键盘输入若干字符串,写入文件myfile4中,用-1作字符输入结束的标志,

    //学生记录由学号和成绩组成,N名学生的数据已放入主函数中的结构体数组中,fun函数:把分数最低的学生数据放入数组b所指的数组中,分数最低的学生可能不止一个.人数返回. #include <st ...

  3. java 实现每次从list中取5000条数据放入新list

    从list中取固定条数的数据放入新的list里 public static <T> List<List<T>> split(List<T> resLis ...

  4. 如何将数据放入下拉框List值

    最近在做下拉框,里面放入值大概有这几种 //仓库业务类型 第一种 model.addAttribute("warehouseBizTypeList", basePropertySe ...

  5. 将Oracle中的数据放入elasticsearch

    package com.c4c.test; import java.sql.Connection; import java.sql.DriverManager; import java.sql.Res ...

  6. 怎么样把ModelMap里面的数据放入Session里面?

    答:可以在类上面加上@SessionAttributes注解,里面包含的字符串就是要放入session里面的key.

  7. 0402数据放入集合进行查询-Java(新手)

    JDBC工具类: package cn.Wuchang.zyDome; import java.sql.*; public class JDBCUtils { private static final ...

  8. datatable把一个LIst的数据放入两个colum防止窜行的做法

    DataColumn objectOne = new DataColumn("objectOne", typeof(object)); dt.Columns.Add(objectO ...

  9. js数据放入缓存,需要再调用

    再贴代码之前先描述下,这个技术应用的场景:一个页面的http请求次数能少点就少,这样大大提高用户体验.所以再一个页面发起一个请求,把所有数据都拿到后储存在缓存里面,你想用的时候再调用出来,这个是非常好 ...

随机推荐

  1. 201521123001《Java程序设计》第5周学习总结

    1. 本周学习总结 1.1 尝试使用思维导图总结有关多态与接口的知识点. 1.2 可选:使用常规方法总结其他上课内容. 答:关于接口: 1.接口是一种抽象,抽取出了共同行为: 2.能够更加清晰地把系统 ...

  2. 201521123063 《Java程序设计》 第12周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多流与文件相关内容. 读操作 (1)读取控制台输入: BufferedReader br = new BufferedReader( ...

  3. Java课程设计-定时器

    Java课程设计--定时器 1.团队课程设计博客链接 团队博客地址 2.个人负责模块或任务说明 框架构建 时间设置面板,倒计时面板 按钮设置 3.自己的代码提交记录截图 4.自己负责模块或任务详细说明 ...

  4. 201521123110《Java程序设计》第10周学习总结

    1. 本周学习总结 2. 书面作业 1.finally 1.1 截图你的提交结果(出现学号) 1.2 4-2中finally中捕获异常需要注意什么? finally块中的代码在正常情况下一定会执行,所 ...

  5. 201521123115 《Java程序设计》第12周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多流与文件相关内容. 2. 书面作业 将Student对象(属性:int id, String name,int age,doubl ...

  6. linux系统命令<二>----du的使用方法

    1> 要显示一个目录树及其每个子树的磁盘使用情况 du /home/linux 这在/home/linux目录及其每个子目录中显示了磁盘块数. 2> 要通过以1024字节为单位显示一个目录 ...

  7. Server Tomcat v7.0 Server at localhost failed to start.解决方法

    ---恢复内容开始--- 今天在做jsp项目的时候,Tomcat突然无法打开了,出现的报错是这样的: 也不知道是怎么搞得,百度了老半天看到有的网友是通过两这个方法解决的,连接在这http://blog ...

  8. response对象的使用

    使用response对象提供的sendRedirect()方法可以将网页重定向到另一个页面.重定向操作支持将地址重定向到不同的主机上,这一点与转发是不同的.在客户端浏览器上将会得到跳转地址,并重新发送 ...

  9. SpringMVC的数据格式化-注解驱动的属性格式化

    一.什么是注解驱动的属性格式化? --在bean的属性中设置,SpringMVC处理 方法参数绑定数据.模型数据输出时自动通过注解应用格式化的功能. 二.注解类型 1.DateTimeFormat @ ...

  10. Springboot与Mybatis整合

    最近自己用springboot和mybatis做了整合,记录一下: 1.先导入用到的jar包 <dependency> <groupId>org.springframework ...