创建数据库Web Services-阿里云开发者社区

开发者社区> rdiframework> 正文

创建数据库Web Services

简介: XML Web Services一个最显然的用处就是通用数据存取。通过它,你可以把公司的数据库被Internet上的许多客户端来访问,也可以动态地把它导入到第三方的Web站点上,甚至可以允许你的商业伙伴的Web Services去查询。
+关注继续查看

XML Web Services一个最显然的用处就是通用数据存取。通过它,你可以把公司的数据库被Internet上的许多客户端来访问,也可以动态地把它导入到第三方的Web站点上,甚至可以允许你的商业伙伴的Web Services去查询。下面就解释一下如何创建一个简单的Web Services,把你的数据库内容显示到Internet Explorer、第三方的Web Services和自定义的C#和VB.NET的客户端。

合作伙伴、客户、雇员在使用为多种设备设计的数据时已经有相当丰富的经验了,不管你现在的数据库是如何组织的,为了确保通用性,Web Services向客户端返回XML格式的数据。例如:假如一个物流公司(你的合作伙伴)准备把你的货物运送给你的客户,当运送车到达客户的门前时,他的PDA上显示出发送地址改变的信息,此时,运货车就很轻易地把它运送到别的地方去,那是因为你的客户在数据库里改变了他的地址,这种变化也自动地在你的合作伙伴的系统里自动更新了。

下面,就开始编写自己的ASP.NET数据库Web Services。首先,检查你的数据库,看它是否能够很轻易地就可以输出XML格式的数据,看看ADO.NET能否读出并进行动态转换。有些情况下,你可能需要对目前的数据库进行转换以满足这种需要。如果你的数据库访问代码变的很复杂,以致于会影响到伸缩性的情况,建议你对数据库进行转换。

为简单起见,这里假设例子中的数据库只有一个“Products”表。当然,你的数据库可能有许多表,也可能你的Web Services需要访问不止一个数据库。

现在,我们就可以开始写代码了。打开Visual Studio .NET,在DataBaseWebService目录下创建一个C#的ASP.NET Web Services项目,如图: 



在Service1.asmx上点击右键,把Service1.asmx更名为DataBaseWebService.asmx,这个文件将会包含有从数据库得到数据的WebMethods,然后,点击右键,选择“查看代码”,切换到代码视图,更改为DataBaseWebService类和构造器的名字。

先在开始处引用.NET的类库:

using System.Data.SqlClient;
using System.Data.OleDb;


然后更改类的名字为DataBaseWebService:

public class DataBaseWebService : System.Web.Services.WebService
{
    public DataBaseWebService()
    {
        //CODEGEN:该调用是 ASP.NET Web 服务设计器所必需的
        InitializeComponent();
    }
    //...
}


在Hello World方法的结尾处写上自己的方法代码,第一个方法SQLDB用来访问SQL Server数据库,它处理客户端发送的SQL Server查询,SQLDB的参数从浏览器地址栏传送的查询语句,所有的WebMethod方法的代码都有try/catch语句,用来处理查询失败时输出一些错误信息。如果WebMethod方法在运行时出现例外,catch语句产生一个数据集,是一个包含错误信息的Error表。

SQLDB方法首先创建并打开SQL数据库连接,连接字符串在你的服务器上应当是唯一的,做为例子,我们使用Visual Studio .NET安装时自带的示例数据库;接下来,SQLDB方法创建SQL数据适配器,参数QUERY用来决定要返回的数据记录;最后产生查询结果的数据集,并一XML格式,并以Results为根节点的结果。代码如下:

[WebMethod]
public DataSet SQLDB(string Query)
{
    try
    {
        SqlConnection CS = 
            new SqlConnection("server=(local)//NetSDK;database=Northwind;Trusted_Connection=yes");
        SqlDataAdapter myCommand = new SqlDataAdapter(Query, CS);
        DataSet myDataSet = new DataSet();
        myCommand.Fill(myDataSet, "Results");
        return myDataSet;
    }
    catch (Exception ex)
    {
        return DataError(ex);
    }
}


用来查询ACCESS数据库的方法与SQL基本相同,为了大家测试方便,全部代码如下:

[WebMethod]
public DataSet AccessDB(string Query)
{
    try
    {
        string strAccessConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
               + this.Server.MapPath("AccessWebServices.mdb");
        OleDbConnection myAccessConn = new OleDbConnection(strAccessConn);
        OleDbCommand myAccessCommand = new OleDbCommand(Query, myAccessConn);
        OleDbDataAdapter myDataAdapter = new OleDbDataAdapter(myAccessCommand);
        myAccessConn.Open();
        DataSet myDataSet = new DataSet();
        myDataAdapter.Fill(myDataSet, "Results");
        myAccessConn.Close();
        return myDataSet;
    }
    catch (Exception ex)
    {
        return DataError(ex);
    }
}


最后写上处理错误的方法:

public DataSet DataError(Exception ex)
{
    DataSet errDS = new DataSet("Errors");
    DataTable errTable = errDS.Tables.Add("Error");
    errTable.Columns.Add("Message");
    errTable.Rows.Add(new Object[] { ex.Message });

    return errDS;
}


现在,你就可以编译该项目了,看看你的Web Services是否能正常工作。如果能正常工作,结果将如下所示:

单击显示全图,Ctrl+滚轮缩放图片

然后选择您的数据库类型,如下图所示:

单击显示全图,Ctrl+滚轮缩放图片

选择AccessDB(注意:在进行此操作之前,请先建立数据库AccessWebServices.mdb,并建立表AcessTableTest,并放到DataBaseWebService目录之下),在Query里输入“select * from AcessTableTest”,然后点“Invoke”,你就会得到一个XML格式的查询结果,显示如下:

单击显示全图,Ctrl+滚轮缩放图片

如果出现上图类似的结果,说明你的Web Services能够使用了。

如果再配合XSL,就可以产生可以浏览的HTML页面了,你也可以直接在地址栏里输入:http://localhost/DataBaseWebService/DataBaseWebService.asmx/AccessDB?Query=select+*+from+AcessTableTest得到想要的数据。

下面用C#写一个使用该Web Services的客户端应用程序。新建一个Windows应用程序的VS.NET项目,名为WebServicesClient,在解决方案浏览器上点右键,选择添加Web引用,在弹出的对话框里输入:

http://localhost/DataBaseWebService/DataBaseWebService.asmx



然后点击“添加引用”,VS.NET就会把所需要的文件添加到你的项目里。在From1上添加菜单,并添加两个菜单项,“得到 SQL Server 产品列表”和“得到 Access 产品列表”,要使用我们刚才创建的Web Services,先创建Web Services的一个实例,如下所示:

 
private void menuItem1_Click(object sender, System.EventArgs e)
{
    WebServicesClient.localhost.DataBaseWebService Database 
        = new WebServicesClient.localhost.DataBaseWebService();
    DataSet ds = Database.SQLDB("select * from Products");
    dataGrid1.DataSource = ds.Tables[0];
}

private void menuItem2_Click(object sender, System.EventArgs e)
{
    WebServicesClient.localhost.DataBaseWebService Database
        = new WebServicesClient.localhost.DataBaseWebService();
    DataSet ds = Database.AccessDB("select * from AcessTableTest");
    dataGrid1.DataSource = ds.Tables[0];
}


最后,运行新建立的Window应用程序,就可以分别得到我们刚才所举的数据库里的数据了。如下图所示:

单击显示全图,Ctrl+滚轮缩放图片 

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
SharePoint自动化系列——通过PowerShell创建SharePoint Web
转载请注明出自天外归云的博客园:http://www.cnblogs.com/LanTianYou/ 代码如下(保存到本地ps1文件中,右键run with PowerShell即可): Add-PSSnapin Microsoft.
632 0
linux自动定时备份web程序和mysql数据库
  前些天受朋友说linux定时备份不知道怎么搞,叫帮忙处理一下。由于这段时间正闲着,所以也就欣然答应。由于朋友对linux不懂也希望我将操作的过程记录下来,也就是越详细越好。所以写得比较$%^&*。本以为半个小时或者一个小时可以搞好,谁不知整整搞了一天。
952 0
长文解析:作为容器底层技术的半壁江山, cgroup如何突破并发创建瓶颈?
io_uring 作为一种新型高性能异步编程框架,代表着 Linux 内核未来的方向,当前仍处于快速发展中。阿里云联合 InfoQ 发起《io_uring 介绍及应用实践》的技术公开课,围绕 OpenAnolis 龙蜥社区 Anolis OS 8 全方位解析高性能存储场景。
248 0
intellij 创建java web项目(maven管理的SSH)
intellij 创建java web项目(maven管理的SSH) 环境intellij IDEA14、MAVEN、Spring、Struts2、Hibernate、Java Web。工程搭建。 1、创建maven项目 1、关闭现有项目,或者new progect 2、创建maven的web工程 3 4 5 2、添加web工程 6、添加web
1287 0
使用IntelliJ IDEA 14和Maven创建java web项目
原文:使用IntelliJ IDEA 14和Maven创建java web项目 http://mark.leanote.com/post/%E4%BD%BF%E7%94%A8IntelliJ-IDEA-14%E5%92%8CMaven%E5%88%9B%E5%BB%BAjava-web%E9%A1%B9%E7%9B%AE 安装Maven 下载安装 去maven官网下载最新版。
1283 0
MyEclipse创建SSH项目(Java web由maven管理)
JavaEE后台开发,MyEclipse创建SSH项目,MyEclipse创建Java web 由maven管理的SSH项目。 Demo工程源码github地址 1、创建SSH项目 1、创建web工程 2、勾选maven支持 3、下一步 4、两个都勾选 5、选择maven 6、取消勾选,不选择依赖,因为pom.xml会引入所有需要的依赖 7、创建初步完成 8、完善
1702 0
蚂蚁自研数据库 OceanBase 首次阐述战略:继续坚持自研开放之路 开源300万行核心代码
官宣! OceanBase 开源300万行代码! 6月1日,在数据库OceanBase3.0峰会上,蚂蚁集团自主研发的分布式数据库OceanBase 首次从技术、商业和生态三个维度对未来发展战略进行了系统性阐述。大会现场,CEO杨冰还宣布自研数据库OceanBase正式开源,并成立OceanBase开源社区,社区官网同步上线。
189 0
+关注
rdiframework
RDIFramework.NET,基于.NET的快速信息化系统开发、整合框架,给用户和开发者最佳的.Net框架部署方案。 框架官网:http://www.rdiframework.net/ 框架博客:http://blog.rdiframework.net/
314
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载