欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

創(chuàng)建數(shù)據(jù)庫Web Services

系統(tǒng) 1861 0

XMLWebServices一個(gè)最顯然的用處就是通用數(shù)據(jù)存取。通過它,你可以把公司的數(shù)據(jù)庫被Internet上的許多客戶端來訪問,也可以動(dòng)態(tài)地把它導(dǎo)入到第三方的Web站點(diǎn)上,甚至可以允許你的商業(yè)伙伴的WebServices去查詢。下面就解釋一下如何創(chuàng)建一個(gè)簡(jiǎn)單的WebServices,把你的數(shù)據(jù)庫內(nèi)容顯示到InternetExplorer、第三方的WebServices和自定義的C#和VB.NET的客戶端。

合作伙伴、客戶、雇員在使用為多種設(shè)備設(shè)計(jì)的數(shù)據(jù)時(shí)已經(jīng)有相當(dāng)豐富的經(jīng)驗(yàn)了,不管你現(xiàn)在的數(shù)據(jù)庫是如何組織的,為了確保通用性,WebServices向客戶端返回XML格式的數(shù)據(jù)。例如:假如一個(gè)物流公司(你的合作伙伴)準(zhǔn)備把你的貨物運(yùn)送給你的客戶,當(dāng)運(yùn)送車到達(dá)客戶的門前時(shí),他的PDA上顯示出發(fā)送地址改變的信息,此時(shí),運(yùn)貨車就很輕易地把它運(yùn)送到別的地方去,那是因?yàn)槟愕目蛻粼跀?shù)據(jù)庫里改變了他的地址,這種變化也自動(dòng)地在你的合作伙伴的系統(tǒng)里自動(dòng)更新了。

下面,就開始編寫自己的ASP.NET數(shù)據(jù)庫WebServices。首先,檢查你的數(shù)據(jù)庫,看它是否能夠很輕易地就可以輸出XML格式的數(shù)據(jù),看看ADO.NET能否讀出并進(jìn)行動(dòng)態(tài)轉(zhuǎn)換。有些情況下,你可能需要對(duì)目前的數(shù)據(jù)庫進(jìn)行轉(zhuǎn)換以滿足這種需要。如果你的數(shù)據(jù)庫訪問代碼變的很復(fù)雜,以致于會(huì)影響到伸縮性的情況,建議你對(duì)數(shù)據(jù)庫進(jìn)行轉(zhuǎn)換。

為簡(jiǎn)單起見,這里假設(shè)例子中的數(shù)據(jù)庫只有一個(gè)“Products”表。當(dāng)然,你的數(shù)據(jù)庫可能有許多表,也可能你的WebServices需要訪問不止一個(gè)數(shù)據(jù)庫。

現(xiàn)在,我們就可以開始寫代碼了。打開VisualStudio.NET,在DataBaseWebService目錄下創(chuàng)建一個(gè)C#的ASP.NETWebServices項(xiàng)目,如圖:



在Service1.asmx上點(diǎn)擊右鍵,把Service1.asmx更名為DataBaseWebService.asmx,這個(gè)文件將會(huì)包含有從數(shù)據(jù)庫得到數(shù)據(jù)的WebMethods,然后,點(diǎn)擊右鍵,選擇“查看代碼”,切換到代碼視圖,更改為DataBaseWebService類和構(gòu)造器的名字。

先在開始處引用.NET的類庫:

        
          
            using
          
           System.Data.SqlClient;

          
            using
          
           System.Data.OleDb;
        
      


然后更改類的名字為DataBaseWebService:

        
          
        
              


在HelloWorld方法的結(jié)尾處寫上自己的方法代碼,第一個(gè)方法SQLDB用來訪問SQLServer數(shù)據(jù)庫,它處理客戶端發(fā)送的SQLServer查詢,SQLDB的參數(shù)從瀏覽器地址欄傳送的查詢語句,所有的WebMethod方法的代碼都有try/catch語句,用來處理查詢失敗時(shí)輸出一些錯(cuò)誤信息。如果WebMethod方法在運(yùn)行時(shí)出現(xiàn)例外,catch語句產(chǎn)生一個(gè)數(shù)據(jù)集,是一個(gè)包含錯(cuò)誤信息的Error表。

SQLDB方法首先創(chuàng)建并打開SQL數(shù)據(jù)庫連接,連接字符串在你的服務(wù)器上應(yīng)當(dāng)是唯一的,做為例子,我們使用VisualStudio.NET安裝時(shí)自帶的示例數(shù)據(jù)庫;接下來,SQLDB方法創(chuàng)建SQL數(shù)據(jù)適配器,參數(shù)QUERY用來決定要返回的數(shù)據(jù)記錄;最后產(chǎn)生查詢結(jié)果的數(shù)據(jù)集,并一XML格式,并以Results為根節(jié)點(diǎn)的結(jié)果。代碼如下:

        
          [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數(shù)據(jù)庫的方法與SQL基本相同,為了大家測(cè)試方便,全部代碼如下:

        
          [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);
    }
}
        
      


最后寫上處理錯(cuò)誤的方法:

        
          
            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;
}
        
      


現(xiàn)在,你就可以編譯該項(xiàng)目了,看看你的WebServices是否能正常工作。如果能正常工作,結(jié)果將如下所示:

單擊顯示全圖,Ctrl+滾輪縮放圖片

然后選擇您的數(shù)據(jù)庫類型,如下圖所示:

單擊顯示全圖,Ctrl+滾輪縮放圖片

選擇AccessDB(注意:在進(jìn)行此操作之前,請(qǐng)先建立數(shù)據(jù)庫AccessWebServices.mdb,并建立表AcessTableTest,并放到DataBaseWebService目錄之下),在Query里輸入“select*fromAcessTableTest”,然后點(diǎn)“Invoke”,你就會(huì)得到一個(gè)XML格式的查詢結(jié)果,顯示如下:

單擊顯示全圖,Ctrl+滾輪縮放圖片

如果出現(xiàn)上圖類似的結(jié)果,說明你的WebServices能夠使用了。

如果再配合XSL,就可以產(chǎn)生可以瀏覽的HTML頁面了,你也可以直接在地址欄里輸入:http://localhost/DataBaseWebService/DataBaseWebService.asmx/AccessDB?Query=select+*+from+AcessTableTest得到想要的數(shù)據(jù)。

下面用C#寫一個(gè)使用該WebServices的客戶端應(yīng)用程序。新建一個(gè)Windows應(yīng)用程序的VS.NET項(xiàng)目,名為WebServicesClient,在解決方案瀏覽器上點(diǎn)右鍵,選擇添加Web引用,在彈出的對(duì)話框里輸入:

http://localhost/DataBaseWebService/DataBaseWebService.asmx



然后點(diǎn)擊“添加引用”,VS.NET就會(huì)把所需要的文件添加到你的項(xiàng)目里。在From1上添加菜單,并添加兩個(gè)菜單項(xiàng),“得到SQLServer產(chǎn)品列表”和“得到Access產(chǎn)品列表”,要使用我們剛才創(chuàng)建的WebServices,先創(chuàng)建WebServices的一個(gè)實(shí)例,如下所示:

        
          
            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];
}
        
      


最后,運(yùn)行新建立的Window應(yīng)用程序,就可以分別得到我們剛才所舉的數(shù)據(jù)庫里的數(shù)據(jù)了。如下圖所示:

單擊顯示全圖,Ctrl+滾輪縮放圖片

創(chuàng)建數(shù)據(jù)庫Web Services


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

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

【本文對(duì)您有幫助就好】

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

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 天天操天天玩 | 新婚少妇小倩给老许泄火 | 久久久91| 亚洲视频网址 | 色就干 | 特一级毛片 | 欧美福利大片 | α片毛片| 午夜视频在线观看一区 | av激情在线 | 春色www视频在线观看 | 黄视频免费在线 | 午夜精品一区二区三区在线视 | 97精品久久 | 激情五月色婷婷 | 国产成人在线播放视频 | 成人亚洲A片V一区二区三区婷婷 | 久久不卡一区二区三区 | 国产高清在线精品免费 | 国产精品成人免费视频不卡 | 国产精品久久久久久久久免费相片 | 精品一区二区三区在线视频 | 精品视频一区二区三区在线观看 | 黄色av一区| 国产成人黄网在线免 | 伊人欧美 | 成人羞羞网站 | 韩国精品一区 | 99热在线免费 | 亚洲欧美日韩在线不卡中文 | 偷拍亚洲制服另类无码专区 | 久久综合久久综合久久综合 | 成人在线综合网 | 免费v片 | 亚洲精品久久九九热 | 国产在线aaa片一区二区99 | av在线免费观看播放 | 亚洲成人另类 | 久久一日本道色综合久久 | 国产福利视频在线观看 | 伊人影院综合 |