.NET采集数据,放入数据库总结
第一次做采集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采集数据,放入数据库总结的更多相关文章
- php批量上传图片并把图片名放入数据库
前几天工作中要做这样一个功能,有八百多个系统 生成的会员:给这八百多个系统会员上传图片:然后把图片名放入数据库. 第一步: 第一步肯定是首先把图片上传到对应的图片目录下,直接用框架中已经有的上传类: ...
- C语言:把分数最低的学生数据放入数组b所指的数组中,-从键盘输入若干字符串,写入文件myfile4中,用-1作字符输入结束的标志,
//学生记录由学号和成绩组成,N名学生的数据已放入主函数中的结构体数组中,fun函数:把分数最低的学生数据放入数组b所指的数组中,分数最低的学生可能不止一个.人数返回. #include <st ...
- java 实现每次从list中取5000条数据放入新list
从list中取固定条数的数据放入新的list里 public static <T> List<List<T>> split(List<T> resLis ...
- 如何将数据放入下拉框List值
最近在做下拉框,里面放入值大概有这几种 //仓库业务类型 第一种 model.addAttribute("warehouseBizTypeList", basePropertySe ...
- 将Oracle中的数据放入elasticsearch
package com.c4c.test; import java.sql.Connection; import java.sql.DriverManager; import java.sql.Res ...
- 怎么样把ModelMap里面的数据放入Session里面?
答:可以在类上面加上@SessionAttributes注解,里面包含的字符串就是要放入session里面的key.
- 0402数据放入集合进行查询-Java(新手)
JDBC工具类: package cn.Wuchang.zyDome; import java.sql.*; public class JDBCUtils { private static final ...
- datatable把一个LIst的数据放入两个colum防止窜行的做法
DataColumn objectOne = new DataColumn("objectOne", typeof(object)); dt.Columns.Add(objectO ...
- js数据放入缓存,需要再调用
再贴代码之前先描述下,这个技术应用的场景:一个页面的http请求次数能少点就少,这样大大提高用户体验.所以再一个页面发起一个请求,把所有数据都拿到后储存在缓存里面,你想用的时候再调用出来,这个是非常好 ...
随机推荐
- 201521123093 java 第二周学习总结
201521123093 <java程序设计> 第二周学习总结 一.第二周学习总结 答:(1)关于进一步使用码云管理代码,本周才真正学会了如何将Eclipse里的代码上传到码云中,并且能够 ...
- JAVA课程设计--简易计算器(201521123022 黄俊麟)
1.团队课程设计博客链接 http://www.cnblogs.com/I-love-java/p/7058752.html 2.个人负责模板或任务说明 1.初始化业务逻辑. 2.开方.正负.清零.退 ...
- Calico 的默认连通性 - 每天5分钟玩转 Docker 容器技术(69)
前面我们完成了 Calico 网络的部署并运行了容器,今天将讨论 Calico 的连通性. 测试一下 bbox1 与 bbox2 的连通性: ping 成功,数据包流向如下图所示. ① 根据 bbox ...
- Hibernate第十一篇【配置C3P0数据库连接池、线程Session】
Hibernate连接池 Hibernate自带了连接池,但是呢,该连接池比较简单..而Hibernate又对C3P0这个连接池支持-因此我们来更换Hibernate连接池为C3P0 查看Hibern ...
- Servlet第三篇【request和response简介、response的常见应用】
response.request对象 Tomcat收到客户端的http请求,会针对每一次请求,分别创建一个代表请求的request对象.和代表响应的response对象 既然request对象代表ht ...
- SpringSecurity 登录 - 以及Md5加密
我们现在开放一个链接给其他系统,来访问我们的系统 http://localhost:8080/hulk-teller-web/haihui!init.jspa?loginId=teller01& ...
- ngRepeat track by
刚刚看见一篇文章讲述track by的功能的,大致记录如下: 1. ng-repeat="friend in friends" 一般不使用track by的情况下,每次刷新DOM, ...
- KMP算法的来龙去脉
1. 引言 字符串匹配是极为常见的一种模式匹配.简单地说,就是判断主串TT中是否出现该模式串PP,即PP为TT的子串.特别地,定义主串为T[0-n−1]T[0-n−1],模式串为P[0-p−1]P[0 ...
- Codeforce 854 A. Fraction
A. Fraction time limit per test 1 second memory limit per test 512 megabytes input standard input ou ...
- Lodop 动态加载模板,动态加载数据
最近需要使用Lodop打印控件,所以就研究了一下,期间从网上找了诸多的东西,基本全是对HTML进行打印的,没有找到我想要的,就只好自己动手丰衣足食. 这篇文章主要讲述的是Lodop与数据的结合使用,官 ...