.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请求次数能少点就少,这样大大提高用户体验.所以再一个页面发起一个请求,把所有数据都拿到后储存在缓存里面,你想用的时候再调用出来,这个是非常好 ...
随机推荐
- 201521123024 《Java程序设计》第2周学习总结
1. 本周学习总结 1.Scanner扫描器的用法 2.各种数据类型的使用 3.运算符和表达式的使用 4.枚举类.String类的应用 5.了解用package和import管理类别 2.书面作业 1 ...
- 201521123038 《Java程序设计》 第九周学习总结
201521123038 <Java程序设计> 第九周学习总结 1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常相关内容. 2. 书面作业 本次PTA作业题集异常 ...
- Jar文件 META-INF/MANIFEST.MF文件详解
打开Java的JAR文件我们经常可以看到文件中包含着一个META-INF目录, 这个目录下会有一些文件,其中必有一个MANIFEST.MF,这个文件描述了该Jar文件的很多信息,下面将详细介绍MANI ...
- Eclipse rap 富客户端开发总结(14) :rap 图片、数据缓存处理
一.概述 在进行了 rap 的基本学习之后,您对 rap 的理解是否进入了更高的一个层次呢,个人觉得,对学习 rap 的人来说,进行 rap 的学习是一个探索的过程,在编程中不断的对其进行理解和分析, ...
- Eclipse rap 富客户端开发总结(13) :Rap/Rcp保存按钮处理方式
一.概述 在做项目的过程中,处理编辑区的保存机制的时候.发现,同样是扩展eclipse 自带的保存和全部保存按钮时候,rcp 工程下,保存按钮可以正常的灰显和可用,但是rap 的按钮就是始终呈现灰显的 ...
- 一、React Native 搭建开发环境(1)(Mac OS - IOS项目)
React Native是Facebook推出的一个开发IOS和安卓APP的技术.至于更多的详情,这里不再描述,大家可以自行百度它的定义. 目的: 由于我想在一台电脑上同时开发IOS和Android两 ...
- idea使用转载【别人的专栏】
维C果糖
- Ajax【介绍、入门、解决Ajax中文、跨域、缓存】
什么是Ajax Ajax(Asynchronous JavaScript and XML) 异步JavaScript和XML Ajax实际上是下面这几种技术的融合: (1)XHTML和CSS的基于标准 ...
- Spring - 运行时获取bean(ApplicationContextAware接口)
默认情况下,我们的bean都是单例模式(即从容器初始化到销毁只保持一个实例).当一个bean需要引用另外一个bean,我们往往会通过bean属性的方式通过依赖注入来引用另外一个bean.那么问题就来了 ...
- Linux 命令练习
ls命令 ls就是list的简写,目的是打印当前目录下的清单 格式 ls[选项][目录名] 常用参数 -a –all 列出目录下的所有文件,包括以 . 开头的隐含文件 -l 除了文件名之外,还将文件 ...