欢迎光临
我们一直在努力

如何创建数据库Web Services-.NET教程,Web Service开发

建站超值云服务器,限时71元/月

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项目,如图:

如何创建数据库Web Services-.NET教程,Web Service开发

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

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

using system.data.sqlclient;<br /> using system.data.oledb;<br />

然后更改类的名字为databasewebservice:

public class databasewebservice : system.web.services.webservice<br /> {<br /> public databasewebservice()<br /> {<br /> //codegen:该调用是 asp.net web 服务设计器所必需的<br /> initializecomponent();<br /> }<br /> &#8230;<br /> }<br />

在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]<br /> public dataset sqldb(string query)<br /> {<br /> try<br /> {<br /> sqlconnection cs = new sqlconnection<br /> (&#8220;server=(local)\\netsdk;database=northwind;trusted_connection=yes&#8221;);<br /> sqldataadapter mycommand = new sqldataadapter (query, cs);<br /> dataset mydataset = new dataset();<br /> mycommand.fill(mydataset, &#8220;results&#8221;);<br /> return mydataset;<br /> }<br /> catch(exception ex)<br /> {<br /> return dataerror(ex);<br /> }<br /> }

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

[webmethod]<br /> public dataset accessdb(string query)<br /> {<br /> try<br /> {<br /> string straccessconn = &#8220;provider=microsoft.jet.oledb.4.0;data source=&#8221;<br /> + this.server.mappath(&#8220;accesswebservices.mdb&#8221;);<br /> oledbconnection myaccessconn = new oledbconnection(straccessconn);<br /> oledbcommand myaccesscommand = new oledbcommand(query,myaccessconn);<br /> oledbdataadapter mydataadapter = new oledbdataadapter(myaccesscommand);<br /> myaccessconn.open();<br /> dataset mydataset = new dataset();<br /> mydataadapter.fill(mydataset,&#8221;results&#8221;);<br /> myaccessconn.close();<br /> return mydataset;<br /> }<br /> catch(exception ex)<br /> {<br /> return dataerror(ex);<br /> }<br /> }<br />

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

public dataset dataerror(exception ex)<br /> {<br /> dataset errds = new dataset(&#8220;errors&#8221;);<br /> datatable errtable = errds.tables.add(&#8220;error&#8221;);<br /> errtable.columns.add(&#8220;message&#8221;);<br /> errtable.rows.add(new object[] {ex.message});<br /> return errds;<br /> }

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

如何创建数据库Web Services-.NET教程,Web Service开发

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

如何创建数据库Web Services-.NET教程,Web Service开发

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

如何创建数据库Web Services-.NET教程,Web Service开发

如果出现上图类似的结果,说明你的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)<br /> {<br /> webservicesclient.localhost.databasewebservice database = new webservicesclient.localhost.databasewebservice(); dataset ds = database.sqldb(&#8220;select * from products&#8221;);<br /> datagrid1.datasource = ds.tables[0];<br /> }<br /> private void menuitem2_click(object sender,system.eventargs e)<br /> {<br /> webservicesclient.localhost.databasewebservice database = new webservicesclient.localhost.databasewebservice(); dataset ds = database.accessdb(&#8220;select * from acesstabletest&#8221;);<br /> datagrid1.datasource = ds.tables[0];<br /> }

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

如何创建数据库Web Services-.NET教程,Web Service开发

 

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » 如何创建数据库Web Services-.NET教程,Web Service开发
分享到: 更多 (0)