SQL2005CLR函数扩展-解析天气服务的实现

其实我们可以用CLR获取网络服务,来显示到数据库自定函数的结果集中,比如163的天气预报。需要的朋友参考下

我们可以用CLR获取网络服务 来显示到数据库自定函数的结果集中,比如163的天气预报
http://news.163.com/xml/weather.xml
<FONT style=”COLOR: #ff0000″>他的这个xml结果的日期是不正确的,但这个我们暂不讨论。
从这个xml获取天气的CLR代码如下,用WebClient访问一下就可以了。然后通过Dom对象遍历节点属性返回给结果集。
——————————————————————————–
<div class=”codetitle”><a style=”CURSOR: pointer” data=”14017″ class=”copybut” id=”copybut14017″ onclick=”doCopy(‘code14017’)”> 代码如下:<div class=”codebody” id=”code14017″>
using System;
using System.Data;
using System.Data.SqlClient;
using System.Data.SqlTypes;
using System.Collections;
using System.Collections.Generic;
using Microsoft.SqlServer.Server; public partial class UserDefinedFunctions
{ [SqlFunction (TableDefinition = “city nvarchar(100),date nvarchar(100),general nvarchar(100),temperature nvarchar(100),wind nvarchar(100)”,Name = “GetWeather”,FillRowMethodName = “FillRow” )]
public static IEnumerable GetWeather()
{
System.Collections.Generic.List list = GetData();
return list;
}
public static void FillRow(Object obj,out SqlString city,out SqlString date,out SqlString general,out SqlString temperature,out SqlString wind)
{
Item data = (Item )obj;
city = data.city;
date = data.date;
general = data.general;
temperature = data.temperature;
wind = data.wind;
} class Item
{
public string city;
public string date;
public string general;
public string temperature;
public string wind;
}
static System.Collections.Generic.List GetData()
{
System.Collections.Generic.List ret = new List ();
//try
//{ string url = “http://news.163.com/xml/weather.xml” ;
System.Net.WebClient wb = new System.Net.WebClient ();
byte [] b = wb.DownloadData(url);
string data = System.Text.Encoding .Default.GetString(b);
System.Xml.XmlDocument doc = new System.Xml.XmlDocument ();
doc.LoadXml(data); foreach (System.Xml.XmlNode node in doc.ChildNodes[1])
{
string city = GetXMLAttrib(node,”name” );
foreach (System.Xml.XmlNode subnode in node.ChildNodes)
{
Item item = new Item ();
item.city = city;
item.date = GetXMLAttrib(subnode,”date” );
item.general = GetXMLAttrib(subnode,”general” );
item.temperature = GetXMLAttrib(subnode,”temperature” );
item.wind = GetXMLAttrib(subnode,”wind” );
ret.Add(item);
}
} /

作者: dawei

【声明】:永州站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。

为您推荐

联系我们

联系我们

0577-28828765

在线咨询: QQ交谈

邮箱: xwei067@foxmail.com

工作时间:周一至周五,9:00-17:30,节假日休息

返回顶部