.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请求次数能少点就少,这样大大提高用户体验.所以再一个页面发起一个请求,把所有数据都拿到后储存在缓存里面,你想用的时候再调用出来,这个是非常好 ...
随机推荐
- 201521123101 《Java程序设计》第4周学习总结
1. 本周学习总结 1.1 尝试使用思维导图总结有关继承的知识点. 1.2 使用常规方法总结其他上课内容. 理解类的继承的概念,明白父与子之间关系的 2. 书面作业 1.注释的应用,使用类的注释与方法 ...
- 201521123032 《Java程序设计》第4周学习总结
1. 本周学习总结 1.1 尝试使用思维导图总结有关继承的知识点. 1.2 使用常规方法总结其他上课内容. 本周学习了继承,了解其中的父类与子类.了解到类,以及如何识别类,对于名词可以考虑是否创建相应 ...
- 让你的python程序同时兼容python2和python3
python邮件列表里有人发表言论说「python3在10内都无法普及」.在我看来这样的观点有些过于悲观,python3和python2虽然不兼容,但他们之间差别并没很多人想像的那么大.你只需要对自己 ...
- 201521123089《Java程序设计》第14周学习总结
1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多数据库相关内容. 1.数据库:为了实现一定目的按某中规划组织起来的"数据"的"集合". 2 ...
- sublime text3 好用的插件!!!
1.首先,你要保证sublime有Package Control,所以,如果没有,那么将Ctrl+`打开sublime控制台,将下列代码复制进去! import urllib.request,os; ...
- POJ--3172 Scales (DFS 大容量背包 C++)
Scales Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 3148 Accepted: 851 Description ...
- Ansible系列(七):执行过程分析、异步模式和速度优化
本文目录:1.1 ansible执行过程分析1.2 ansible并发和异步1.3 ansible的-t选项妙用1.4 优化ansible速度 1.4.1 设置ansible开启ssh长连接 1.4. ...
- C++中const几中用法
转载自:http://www.cnblogs.com/lichkingct/archive/2009/04/21/1440848.html 1. const修饰普通变量和指针 const修饰变量,一般 ...
- PYTHON 函数局部变量和全局变量
有这样一段PYTHON代码,从事C语言开发的人都知道,如果定义了全局变量,而函数内没有定义同名的函数变量的话,那么在函数内对该变量的赋值就是对全局变量空间数值的修改, 然后在PYTHON中却不尽相同, ...
- C/C++ 进程通讯(命名管道)
服务端代码: // pipe_server.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <stdio.h> ...