• <fieldset id="8imwq"><menu id="8imwq"></menu></fieldset>
  • <bdo id="8imwq"><input id="8imwq"></input></bdo>
    最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
    問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
    當(dāng)前位置: 首頁 - 科技 - 知識百科 - 正文

    ASP.NET數(shù)據(jù)庫編程之Access連接失敗

    來源:懂視網(wǎng) 責(zé)編:小采 時間:2020-11-27 22:45:48
    文檔

    ASP.NET數(shù)據(jù)庫編程之Access連接失敗

    ASP.NET數(shù)據(jù)庫編程之Access連接失敗:錯誤和失敗總會不可避免地在應(yīng)用程序中出現(xiàn)。如果有人在MDB目錄之上又添加了一級新的文件夾而更新了服務(wù)器的目錄樹,那么將會發(fā)生什么?如果MDB名稱被更改了會怎樣?如果MDB文件被損壞又該如何呢?以上每一個問題都將阻止對數(shù)據(jù)的成功連接并導(dǎo)致一個失敗
    推薦度:
    導(dǎo)讀ASP.NET數(shù)據(jù)庫編程之Access連接失敗:錯誤和失敗總會不可避免地在應(yīng)用程序中出現(xiàn)。如果有人在MDB目錄之上又添加了一級新的文件夾而更新了服務(wù)器的目錄樹,那么將會發(fā)生什么?如果MDB名稱被更改了會怎樣?如果MDB文件被損壞又該如何呢?以上每一個問題都將阻止對數(shù)據(jù)的成功連接并導(dǎo)致一個失敗

      錯誤和失敗總會不可避免地在應(yīng)用程序中出現(xiàn)。如果有人在MDB目錄之上又添加了一級新的文件夾而“更新”了服務(wù)器的目錄樹,那么將會發(fā)生什么?如果MDB名稱被更改了會怎樣?如果MDB文件被損壞又該如何呢?以上每一個問題都將阻止對數(shù)據(jù)的成功連接并導(dǎo)致一個失敗頁面。好的編程實(shí)踐表明需要盡可能小心地對待任何失敗。

      在討論實(shí)際命令之前,我們需要了解的是AccessDataSource控件派生于SqlDataSource控件。在大多數(shù)情況下,這只是一個背景問題。但是當(dāng)處理異常的時候,就必須使用實(shí)際上存在于(從而以之命名的)SQL數(shù)據(jù)源對象之中的對象。

      軟著陸的技術(shù)使用的代碼將在AccessDataSource控件經(jīng)歷OnSelected event時被觸發(fā)。當(dāng)GridView從數(shù)據(jù)源控件請求數(shù)據(jù)時,這個事件將會在內(nèi)部觸發(fā)。 處理連接錯誤的代碼就會檢查到從數(shù)據(jù)源控件傳遞過來的異常參數(shù)。AccessDataSource控件沒有關(guān)于這個參數(shù)的自己的名稱,所以只能使用名稱SqlDataSourceStatus- EventArguments。如果異常參數(shù)為空,那么表示什么事情都沒有發(fā)生。如果異常參數(shù)有一個值,那么將檢查這個值。如果參數(shù)是OLEDB Exception類型的,那么頁面上的警告標(biāo)簽的文本將會有提示信息。再次提醒您注意術(shù)語的使用。如果有一個AccessException類型,那將更明了,可惜實(shí)際上沒有這種類型。可以使用更加普通的OleDbException對象并以處理異常的命令結(jié)束腳本。這樣將允許GridView繼續(xù)呈現(xiàn),雖然沒有數(shù)據(jù),并防止出現(xiàn)淺褐色背景的常規(guī)ASP.NET 2.0失敗頁面。因?yàn)镚ridView沒有得到任何數(shù)據(jù),所以它將會顯示一個替換表格,表格中只有一個在其EmptyDataText屬性中顯示消息的單元格。

      如果您在進(jìn)行這些步驟中遇到困難,千萬不要感到悲觀;下一個練習(xí)將會進(jìn)行示范。而現(xiàn)在,只需將代碼剪切并粘貼到頁面之中。在本書的后面,我將會討論如何創(chuàng)建一個用于連接失敗情況下的GridView的替換頁面以及處理錯誤事件的詳細(xì)內(nèi)容。

      試一試#4—— 處理AccessDataSource連接失敗

      (1) 在ch02文件夾中,創(chuàng)建一個名為TIO-4-ConnectionFailure-CS.aspx的文件。在Design視圖中,添加一個指向Northwind 的AccessDataSource控件至頁面,該控件從表中選擇了所有列。

      (2) 添加GridView用來顯示數(shù)據(jù)源控件中的信息。同樣,添加一個標(biāo)簽控件,并將其命名為“Message”。

      (3) 現(xiàn)在切換至Source視圖并對標(biāo)記作一些修改,如下突出顯示代碼所示。如果其中有<columns>標(biāo)記部分,則將其刪除。留下的代碼應(yīng)當(dāng)如下所示:

    <html>
    <head id="Headl" runat="server">
    <title>Chapter 2 TIO #4 Connection Failure to Access in C#</title>
    </head>
    <body>
    <h3>Chapter 2 TIO #4 Connection Failure to Access in C#</h3>
    <form id="forml" runat="server">
    <asp:label ID="Message" runat="server"/><br/><br/>
    <asp:gridview id="GridViewl" runat="server"
    datasourceid="AccessDataSourcel"
    AutoGenerateColumns="true"
    EmptyDataText="No data records were returned" />
    <asp:AccessDataSource ID="AccessDataSourcel" Runat="server"
    selectcommand="Select * From Products"
    datafile="~/App_Data/Northwind.mdb"
    OnSelected="AccessDataSourcel_Selected"
    />

    </form>
    </body></html>
      (4) 檢查頁面;在查看由Northwind售出的產(chǎn)品的時候,不應(yīng)該出現(xiàn)問題。

      (5) 現(xiàn)在將添加代碼來處理連接問題了。轉(zhuǎn)到頁面的頂部并進(jìn)入如下腳本。第一個示例用C#編寫,第二個示例用VB編寫。進(jìn)入其中之一即可。

    <%@ page language="C#" %>
    <script runat="server">

    void AccessDataSourcel_Selected(object sender, SqlDataSourceStatusEventArgs e)
    {
     if (e.Exception != null)
     {
      if(e.Exception.GetType()==typeof(System.Data.OleDb.OleDbException))
      {
       Message.Text = "There was a problem opening a connection to the
       database. Please contact the system administrator for this site.";

       //Optionally set GridViewl.Visible = false;

       e.ExceptionHandled = true;
      }
     }
    }

    </script>
    <html> ...
      以下是用VB編寫的腳本。

    <%@ Page Language="VB" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtmlll/DTD/xhtmlll.dtd">

    <script runat="server">
    Sub AccessDataSourcel_Selected(ByVal sender As Object, ByVal e As
    SqlDataSourceStatusEventArgs)
     If (Not e.Exception Is Nothing) Then
      If TypeOf e.Exception Is System.Data.OleDb.OleDbException Then
       Message. Text = "There was a problem opening a connection to the database. Please contact the system administrator for this site."

       ' Optionally set GridViewl.Visible = false
       e.ExceptionHandled = True
      End If
     End If
    End Sub

    </script>
    <html> ...


      (6) 保存并運(yùn)行頁面。因?yàn)槲覀儗?shí)際的連接還保持完好,所以現(xiàn)在還沒有任何問題。關(guān)閉瀏覽器。

      (7) 現(xiàn)在將Northwind的MDB文件從\App_Data移動至C:\Temp文件夾中,這樣連接將會失敗。或者,可以修改代碼來嘗試連接Southwind.mdb。運(yùn)行頁面并注意瀏覽器將顯示一個得體的失敗信息。

      (8) 如果移動了Northwind.mdb,那么將其再移動回C:\BegAspNetDb\ App_ Data文件夾中。

      示例說明#4—— 處理AccessDataSource連接失敗

      首先,請回想一下AccessDataSource控件是SqlDataSource的派生物,并且使用了應(yīng)用于OLEDB數(shù)據(jù)源的一系列異常,所以當(dāng)引用了帶有SQL或者OLEDB名稱而不是Access名稱的對象時,請不要驚訝。

      請觀察在頁面上進(jìn)行的處理連接失敗的三個修改。第一,添加了GridView數(shù)據(jù)源控件的一個屬性,該屬性在GridView沒有從數(shù)據(jù)源控件中獲得任何數(shù)據(jù)時將會顯示一條消息。第二,添加了數(shù)據(jù)源控件的一個屬性,該屬性在OnSelected事件發(fā)生時調(diào)用Data_Selected事件處理程序。請注意這處于DataSource事件中。雖然用戶沒有直接選擇 AccessDataSource控件(也沒有向用戶呈現(xiàn)),但是當(dāng)GridView向數(shù)據(jù)源控件請求數(shù)據(jù)時,選擇還是在內(nèi)部發(fā)生了。第三,您編寫了這段腳本。

      該腳本將會接收到幾個參數(shù),其中之一就是異常。這里沒有名為AccessDataSourceStatusEventArgs的對象。但是,可以獲得一個內(nèi)部派生出 Access- DataSource 的基本對象:SQL DataSource。SqlDataSource對象具有可以提交至AccessDataSource控件的狀態(tài)參數(shù)。如果沒有問題,則異常列表為空。如果有一個異常,那么代碼將會進(jìn)行測試來查看拋出的異常是什么類型。同樣地,也沒有像Access Exception一樣的對象。但是,AccessDataSource將異常放入更加普通的稱為OleDb Exception的對象中。假定在這個集合中的所有異常都是由連接失敗造成的。我們的代碼將作出反應(yīng),反饋一些友好的失敗通告到名為Message的標(biāo)簽上。

      這段代碼中的最大的竅門就是始終讓對象使用了三個不同的名稱。使用了一個Access文件(MDB)作為數(shù)據(jù)源并使用AccessDataSource控件。但是使用了底層的SqlDataSource作為事件參數(shù)。最后,使用了普通的OLEDB異常集。很多錯誤都源于在所有的情況下都使用名為Access的ASP.NET 2.0對象。

     

    聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

    文檔

    ASP.NET數(shù)據(jù)庫編程之Access連接失敗

    ASP.NET數(shù)據(jù)庫編程之Access連接失敗:錯誤和失敗總會不可避免地在應(yīng)用程序中出現(xiàn)。如果有人在MDB目錄之上又添加了一級新的文件夾而更新了服務(wù)器的目錄樹,那么將會發(fā)生什么?如果MDB名稱被更改了會怎樣?如果MDB文件被損壞又該如何呢?以上每一個問題都將阻止對數(shù)據(jù)的成功連接并導(dǎo)致一個失敗
    推薦度:
    標(biāo)簽: 連接 數(shù)據(jù)庫 net
    • 熱門焦點(diǎn)

    最新推薦

    猜你喜歡

    熱門推薦

    專題
    Top
    主站蜘蛛池模板: 最新国产の精品合集| 久久99精品国产麻豆蜜芽| 国产精品成人va| 欧美日韩专区麻豆精品在线| 久久99热狠狠色精品一区| 亚洲精品国产V片在线观看| 91亚洲国产成人久久精品| 国产亚洲欧美精品久久久| 香蕉国产精品麻豆亚洲欧美日韩精品自拍欧美v国| 久久精品国产精品国产精品污| 99久久免费只有精品国产| 久久99精品久久久久久9蜜桃| 2021最新国产精品一区| 少妇人妻偷人精品视频| 无码国产亚洲日韩国精品视频一区二区三区 | 日韩精品欧美国产在线| 久久国产免费观看精品| 精品成在人线AV无码免费看| 夜夜精品无码一区二区三区| 欧美精品一区二区在线精品 | 国产福利精品视频自拍 | 久久精品国产99国产电影网| 久久久精品2019免费观看| 午夜国产精品无套| 久久久久久极精品久久久| 国产成人久久久精品二区三区| 日韩精品人妻系列无码专区免费| 九九热在线精品视频| 国产成人久久精品区一区二区 | 四虎永久在线精品国产免费| 国产成人精品日本亚洲11 | 精品久久人人妻人人做精品| 国产精品夜色视频一级区 | 精品乱子伦一区二区三区高清免费播放| 中文精品99久久国产 | 国产91精品黄网在线观看| 国内精品91最新在线观看| 午夜国产精品无套| 国产网红主播无码精品| 国产99视频精品免费视频76| 亚洲综合精品香蕉久久网97|