通过Web Service在本地访问远程数据库的数据

GetCategories.asmx

Web Service的作用,不说大家也知道,下面给出一个例子,与大家分享,同时也是我自己的备份。我将名为GetCategories.asmx文件放在http://www.socent.com/WebService上。

<%@ WebService Language="C#" Class="GetCategories" %>

using System;
using System.Data;
using System.Data.SqlClient;
using System.Web.Services;

[WebService(Namespace="http://www.socent.com/WebService")] // 指定Web Service所在地址
public class GetCategories : WebService
{
[WebMethod]
public DataSet GetProductCategories() // 这里返回数据集,但是不能为DataTable或DataRow(原因大家应该都知道)
{
string ConnStr = "server=socent;uid=sa;pwd=;database=Northwind";
SqlConnection sqlConn = new SqlConnection(ConnStr);
SqlDataAdapter sqlAdapter = new SqlDataAdapter("SELECT CategoryID, CategoryName, Description FROM Categories", SQLConn);

DataSet ds = new DataSet();
sqlAdapter.Fill(ds, "Category");

return ds;
}
}

编译文件

将远程的文件GetCategories.asmx生成GetCat.cs文件(生成文件为cs、名称空间为GatCat、输出文件为GetCat.cs):
wsdl /l:cs /n:GetCat /out:GetCat.cs http://www.socent.com/WebService/GetCategories.asmx

将上一步生成的GetCat.cs编译成dll组件(参考各项名称空间、生成库文件GetCat..dll):
CSC /r:system.dll /r:System.Web.dll /r:System.Xml.dll /r:System.Web.Services.dll /r:System.Data.dll /t:library /out:GetCat..dll GetCat.cs

本地测试

下面是一个本地测试文件,请先确保将GetCat..dll拷贝到bin目录中,<%@ Import Namespace="GetCat" %>中,我们先指定名称空间,然后通过GetCat.GetCategories objWS = new GetCat.GetCategories()实例化对象,这样就可以调用相应的方法了。

<%@ Page Language="C#"%>
<%@ Import Namespace="GetCat" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.SqlClient" %>
<html>
<script runat="server">
void Page_Load(object src, EventArgs e)
{
GetCat.GetCategories objWS = new GetCat.GetCategories();
try
{
DataSet ds = objWS.GetProductCategories();
DG_Cat.DataSource = ds.Tables["Category"].DefaultView;
DG_Cat.DataBind();
}
catch (Exception Ex)
{
Msg.Text = Ex.ToString();
}
}
</script>
<body style="font: 10pt verdana">
<h3>下面是从远程获取的数据</h3>
<form runat="server">
<asp:DataGrid id="DG_Cat" runat="server"
BackColor="#FFFFFF"
BorderColor="black"
ShowFooter="False"
CellPadding=3
CellSpacing="0"
Font-Name="Verdana"
Font-Size="8pt"
HeaderStyle-BackColor="Gray"
EnableViewState="false">
<HeaderStyle ForeColor="#FFFFFF"/>
<AlternatingItemStyle BackColor="Silver"/>
</asp:DataGrid>
<br/><asp:Label id="Msg" runat="server" />
</form>
</body>
</html>

运行结果

对了,上面主要是在cmd下编译文件,也可以在vs.net中通过添加web引用的方式,让vs.net自动编译文件;由于有时候传输的数据比较大(DataSet可能很大),可以采用在Web Service中缓存数据

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值