`

创建数据库Web Services

 
阅读更多

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

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

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

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

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



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

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

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


然后更改类的名字为DataBaseWebService:


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

SQLDB方法首先创建并打开SQL数据库连接,连接字符串在你的服务器上应当是唯一的,做为例子,我们使用VisualStudio.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;
}


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

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

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

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

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

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

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

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

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

http://localhost/DataBaseWebService/DataBaseWebService.asmx



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

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+滚轮缩放图片

分享到:
评论

相关推荐

    terraform-aws-postgresql-rds:一个用于创建Amazon Web Services(AWS)PostgreSQL关系数据库服务器(RDS)的Terraform模块

    terraform-aws-postgresql-rds:一个用于创建Amazon Web Services(AWS)PostgreSQL关系数据库服务器(RDS)的Terraform模块

    WebServices基础培训视频与源码

    资源名称:WebServices基础培训视频与源码资源目录:【】1.WebService之AXIS即时发布【】10.WebService之创建自己ws站点进行调用操作【】11.WebService之查询数据库操作【】12.使用xfire开发webServie操作不同的数据...

    使用.NET Web Services将文件保存到数据库

    几个月前,老板要我创建一个Outlook插件,能够将email附件保存到SQL Server数据库。主要的问题是用户没办法直接连接SQL Server,因为SQL Server在防火墙的后面。第一个版本的文件传输模块没有将文件分割成小块,整个...

    基于.NET平台的新闻发布系统

    利用visual C#.NET数据库技术实现新闻...Microsoft .NET 平台提供创建 XML Web services 并将这些服务集成在一起之所需。对个人用户的好处是无缝的、吸引人的体验。 不足之处请各位指正…… 初次发布,请多多赏光……

    Furion 搭建 webapi

    2、demo 包含数据库以及创建的脚本,下载即可运行 3、EF 已经搭建配置好,如果有疑问,可以看我文章教程 4、demo中的Services和 Repository 做依赖注入已经搭建完成 5、EF 的配置 和 Services与Repository 依赖注入...

    基于中间件技术在动态船期表中的应用与实现

    论文围绕船期表的数据处理,基于Web Services,XML等...通过将基于 XML 的消息用作创建和访问服务的机制, Web services 客户端和 Web services 提供商除了需要了解对方的输入、输出和位置以外,不再需要任何其他信息。

    webservice基于MyEcliplse6.0创建步骤

    初步了解webservie,实验,MyEcliplse6.0带图片详细,清楚,初学者保证可以看得明白。

    webservices-school-project

    任务是创建一个包含 2 个有关视频游戏的 Web 服务的系统,其中一个 Web 服务使用另一个。 该项目由 2 个 SOAP 网络服务应用程序(内部和外部)组成。 两者都已使用 Spring Web Services 和 JAXB 实现。 这些网络...

    NASASpaceApps-Mapping-WebServices:安卓中间件

    NASASpaceApps-Mapping-WebServices 地图网络服务项目是作为对 Nasa Space Apps 挑战的提交而创建的。 该项目代表了一个更大项目的 RESTful Web 服务和数据库连接层部分,该项目旨在解决清洁水映射挑战。 映射网络...

    django-calaccess-cookbook:Chef 食谱和 Fabfile,用于部署加州公民数据联盟的应用程序,以分析加州国务卿在 Amazon Web Services 上的 CAL-ACCESS 数据库

    Chef 食谱和 Fabfile,用于部署加州公民数据联盟的应用程序,以分析加州国务卿在 Amazon Web Services 上的 CAL-ACCESS 数据库 先决条件 Python 2.7 虚拟环境 混帐 入门 创建一个虚拟环境。 $ virtualenv django-...

    gradle-aws-plugin:用于管理Amazon Web Services的Gradle插件

    当前功能/支持的AWS产品S3 创建桶删除存储桶上传对象删除对象文件同步设定...创建数据库实例删除数据库实例修改数据库实例迁移(创建或修改)数据库实例重新启动数据库实例等待数据库实例上的特定状态53路创建托管区域...

    《Visual C# .NET精彩编程实例集锦》配套光盘文件【全】

    《Visual C# .NET精彩编程实例集锦》配套光盘文件【全】 目录回到顶部↑ 前言 第1章 控件操作 ...实例148 如何创建webservices程序 实例149 如何打包webservices程序 实例150 如何访问webservices程序

    ZappyRide-Event-Database-Full-Stack:Amazon Web Services(AWS)基础架构,使用Lambda进行后端开发以及前端开发(React.JS)

    Amazon Web Services(AWS)基础架构,使用Lambda的后端开发和前端开发(React.JS)。 1.基础架构和后端:RAD事件API和数据库 第一部分的目的是构建一个简单的可公开访问的REST API,其中一个端点名为: / events ...

    ASP.NET和AJAX简洁教程

    本文就演示了如果通过ASP.NET AJAX调用ASP.NET web services。 软件需求 本文所有的范例都是使用ASP.NET AJAX RC版,而且,要在SQL Server 2005 (Express版即可)上有一个Northwind数据库。范例使用Visual Studio ...

    Metabase使用指南

    Metabase是一款适用于数据快速分析,数据可视化的工具。 Metabase主要功能创建数据集、在线可视化分析、生成分析...• Redshift (Amazon Web Services) • Snowflake • SparkSQL • SQL Server • SQLite • Vertica

    Maven创建SSH通过CXF远程调用webservice

    两个项目均为maven项目,klpserver为服务端,klpclient为客户端....不需要的配置如数据库连接信息可以注释掉,运行时,直接运行服务端项目,然后运行客户端项目的Action下面的方法即可.控制台可看到相应信息.

    FootballPoll:使用Amazon Web Services的无服务器轮询应用程序

    足球投票使用Amazon Web Services(Lambda,DynamoDB,CloudWatch,API Gateway)作为后端和前端的无服务器应用程序托管在GitHub页面上。 受启发,此应用程序将在结束后重新创建民意调查(新民意调查持续一周,之后...

    VB.NET入门经典第三版001

     掌握了这些知识后,读者就可以进一步研究数据库编程,使用Web窗体创建用于Web的ASP.NET应用程序,并了解XML的基础知识。最后,通过Web Services,还可以把在线提供的功能无缝地集成到自己的应用程序中。  本书...

    [VB.NET入门经典第三版]利斯.002

     掌握了这些知识后,读者就可以进一步研究数据库编程,使用Web窗体创建用于Web的ASP.NET应用程序,并了解XML的基础知识。最后,通过Web Services,还可以把在线提供的功能无缝地集成到自己的应用程序中。  本书...

    疯狂XML讲义(Web Service).pdf

    其中的DOM、SAX、JAXP、dom4j和JDOM都以结构化的方式来创建、解析XML文档,从而可以将XML文档作为数据传输工具,而XQuery则是一种新规范,通过XQuery可以查询XML文档中的数据,就像使用SQL查询关系数据库的数据一样...

Global site tag (gtag.js) - Google Analytics