如何创建数据库Web Services

转载 2006年06月08日 16:40:00

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是否能正常工作。如果能正常工作,结果将如下所示:

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

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

如果出现上图类似的结果,说明你的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应用程序,就可以分别得到我们刚才所举的数据库里的数据了。如下图所示:

相关文章推荐

使用托管代码创建 XML Web services

使用托管代码创建 XML Web services Visual Studio 2005 其他版本 您可以使用 ASP.NET 页框架创建托管代码...

创建web Services服务器(java)

创建web services project   (1)建立接口与实现类    (2)引入XFire的jar包.  (必须的基本包一共8个) 点这里提供基础包    (3)...

SAP 创建 Web Services

sap Web Services     Web service 就是一个应用程序,它向外界暴露出一个能够通过Web进行调用的API。也就是说,可以利用编程的方法通过Web来调用这个应用程序。  ...

创建 Web Services

SAP 创建 Web Services sap Web Services     Web service 就是一个应用程序,它向外界暴露出一个能够通过Web进行调用的API。也就是说,可以利用编程...
  • lqq417
  • lqq417
  • 2011年10月14日 16:02
  • 423

Delphi 7 中使用Indy创建独立的 Web Services/SOAP 服务器(一)

http://www.digicoast.com/delphi_soap_standalone.html

创建网站服务(Web Services)

创建网站服务(Web Services)   网站服务(Web Services)是基于一些标准的(通常是 SOAP),使应用程序能够通过HTTP 交换数据。网站服务由网站方法(web methods...
  • hadstj
  • hadstj
  • 2014年05月23日 20:52
  • 825

使用Jersey框架创建RESTful Web Services

REST是REpresentational State Transfer的缩写(一般中文翻译为表述性状态转移)。2000年Roy Fielding博士在他的博士论文“Architectural S...

使用 Spring 3 来创建 RESTful Web Services

引言 Roy Fielding 是 HTTP 1.0 和 1.1 标准的主要作者之一,2000 年,他在他的博士论文中首次提出了 REST。 通过 REST 风格体系架构,请求和响应都...

使用Spring来创建RESTful Web Services

引言 通过REST风格体系架构,请求和响应都是基于资源表示的传输来构建的。资源是通过全局ID来标识的,这些ID一般使用的是一个统一资源标识符(URI)。客户端应用使用HTTP方法(GET、POST、P...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:如何创建数据库Web Services
举报原因:
原因补充:

(最多只允许输入30个字)