国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

如何創建數據庫Web Services

2024-07-21 02:21:26
字體:
來源:轉載
供稿:網友

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應用程序,就可以分別得到我們剛才所舉的數據庫里的數據了。如下圖所示:

 



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 克拉玛依市| 临夏县| 德惠市| 明水县| 浮梁县| 二连浩特市| 黔西县| 庆元县| 当阳市| 社旗县| 新干县| 怀安县| 科技| 阿勒泰市| 江达县| 宕昌县| 霍林郭勒市| 察哈| 都兰县| 汤阴县| 吉木萨尔县| 施甸县| 阿巴嘎旗| 漯河市| 罗甸县| 郴州市| 邮箱| 怀宁县| 石首市| 西华县| 三江| 郸城县| 武乡县| 出国| 福建省| 巨鹿县| 太湖县| 馆陶县| 赞皇县| 遂宁市| 温宿县|