创建数据库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+滚轮缩放图片 


本文转自yonghu86 51CTO博客,原文链接:http://blog.51cto.com/yonghu/1321397,如需转载请自行联系原作者

相关文章
|
9月前
|
XML JSON API
Understanding RESTful API and Web Services: Key Differences and Use Cases
在现代软件开发中,RESTful API和Web服务均用于实现系统间通信,但各有特点。RESTful API遵循REST原则,主要使用HTTP/HTTPS协议,数据格式多为JSON或XML,适用于无状态通信;而Web服务包括SOAP和REST,常用于基于网络的API,采用标准化方法如WSDL或OpenAPI。理解两者区别有助于选择适合应用需求的解决方案,构建高效、可扩展的应用程序。
|
XML 关系型数据库 MySQL
Web Services 服务 是不是过时了?创建 Web Services 服务实例
本文讨论了WebServices(基于SOAP协议)与WebAPI(基于RESTful)在开发中的应用,回顾了WebServices的历史特点,比较了两者在技术栈、轻量化和适用场景的差异,并分享了使用VB.net开发WebServices的具体配置步骤和疑问。
365 0
|
安全 关系型数据库 数据库
FastAPI数据库操作秘籍:如何通过高效且安全的数据库访问策略,使你的Web应用飞速运转并保持数据完整性?
【8月更文挑战第31天】在构建现代Web应用时,数据库操作至关重要。FastAPI不仅简化了API创建,还提供了高效数据库交互的方法。本文探讨如何在FastAPI中实现快速、安全的数据处理。FastAPI支持多种数据库,如SQLite、PostgreSQL和MySQL;选择合适的数据库可显著提升性能。通过安装相应驱动并配置连接参数,结合ORM库(如Tortoise-ORM或SQLAlchemy),可以简化数据库操作。使用索引、批量操作及异步处理等最佳实践可进一步提高效率。同时,确保使用参数化查询防止SQL注入,并从环境变量中读取敏感信息以增强安全性。
847 1
|
数据采集 数据可视化 关系型数据库
【优秀python web设计】基于Python flask的猫眼电影可视化系统,可视化用echart,前端Layui,数据库用MySQL,包括爬虫
本文介绍了一个基于Python Flask框架、MySQL数据库和Layui前端框架的猫眼电影数据采集分析与可视化系统,该系统通过爬虫技术采集电影数据,利用数据分析库进行处理,并使用Echart进行数据的可视化展示,以提供全面、准确的电影市场分析结果。
587 4
|
开发框架 缓存 NoSQL
基于SqlSugar的数据库访问处理的封装,在.net6框架的Web API上开发应用
基于SqlSugar的数据库访问处理的封装,在.net6框架的Web API上开发应用
|
关系型数据库 Java MySQL
"解锁Java Web传奇之旅:从JDK1.8到Tomcat,再到MariaDB,一场跨越数据库的冒险安装盛宴,挑战你的技术极限!"
【9月更文挑战第6天】在Linux环境下安装JDK 1.8、Tomcat和MariaDB是搭建Java Web应用的关键步骤。本文详细介绍了使用apt-get安装OpenJDK 1.8、下载并配置Tomcat,以及安装和安全设置MariaDB(MySQL的开源分支)的方法。通过这些步骤,您可以快速构建一个稳定、高效的开发和部署环境,并验证各组件是否正确安装和运行。这为您的Java Web应用提供了一个坚实的基础。
232 0
|
开发者 前端开发 Java
架构模式的诗与远方:如何在MVC的田野上,用Struts 2编织Web开发的新篇章
【8月更文挑战第31天】架构模式是软件开发的核心概念,MVC(Model-View-Controller)通过清晰的分层和职责分离,成为广泛采用的模式。随着业务需求的复杂化,Struts 2框架应运而生,继承MVC优点并引入更多功能。本文探讨从MVC到Struts 2的演进,强调架构模式的重要性。MVC将应用程序分为模型、视图和控制器三部分,提高模块化和可维护性。
144 0
|
数据库 开发者 Python
【绝技揭秘】如何用Web2py玩转数据库?打造数据驱动Web应用的五大绝招!
【8月更文挑战第31天】本文通过具体示例介绍如何使用Web2py这款强大的Python Web框架进行数据库操作,创建数据驱动的Web应用。从创建应用、定义数据库模型到实现CRUD操作,逐步演示了如何构建一个简单的博客系统,包括文章列表页和详情页,并提供表单让用户创建新文章。通过本文,你将学会利用Web2py简化数据库交互,提升开发效率。
167 0
|
SQL 缓存 PHP
PHP 与数据库优化:提升Web应用性能的关键
在Web开发中,PHP作为一种流行的服务器端脚本语言,与数据库密切相关。本文探讨了如何通过PHP与数据库优化来提升Web应用的性能和响应速度。从数据库查询优化、索引的设计到PHP代码编写的最佳实践,我们将深入探讨每个方面如何影响应用的效率和用户体验。
140 4
|
网络协议 NoSQL 网络安全
【Azure 应用服务】由Web App“无法连接数据库”而逐步分析到解析内网地址的办法(SQL和Redis开启private endpoint,只能通过内网访问,无法从公网访问的情况下)
【Azure 应用服务】由Web App“无法连接数据库”而逐步分析到解析内网地址的办法(SQL和Redis开启private endpoint,只能通过内网访问,无法从公网访问的情况下)
261 0

热门文章

最新文章