亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

創建數據庫Web Services

系統 1783 0

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+滾輪縮放圖片

創建數據庫Web Services


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 亚洲精品6久久久久中文字幕 | 日本狠狠干 | 成人在线视频网址 | 国产精品欧美在线 | 色综合成人丁香 | 老司机午夜精品视频 | 日韩视频不卡 | 色爱区综合五月激情 | 99re66热这里只有精品首页 | 一区二区中文字幕 | 国内精品一区二区2021在线 | 国产成人在线播放视频 | 奇米影视777欧美在线观看 | 亚洲一区二区三区欧美 | 免费人成在线观看网站 | 国产成人一区二区三区视频免费蜜 | 玖玖中文 | 欧美日韩中文国产一区二区三区 | 一区二区三区在线观看视频 | 国产精品va一区二区三区 | 色好看在线视频播放 | 四虎影院永久地址 | 成人午夜亚洲影视在线观看 | 99热成人精品免费久久 | 日本一级特黄aa毛片免费观看 | 精品综合久久久久久97超人 | 精品久久久久久中文字幕女 | 看一级特黄a大片日本片黑人 | 99re久久在热线播放最新地址 | 极品吹潮视频大喷潮tv | 四虎成人精品在永久在线观看 | jizz国产精品免费麻豆 | 免费a级特黄国产大片 | 女人隐私秘视频黄www免费 | 曰本女人视频69xxx | 四虎永久免费影院在线 | 中文字幕亚洲综合久久男男 | 草草草在线视频 | 久在线观看 | 香蕉福利久久福利久久香蕉 | 久草免费在线观看视频 |