一区二区久久-一区二区三区www-一区二区三区久久-一区二区三区久久精品-麻豆国产一区二区在线观看-麻豆国产视频

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

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

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

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

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

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

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

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

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

<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售出的產品的時候,不應該出現(xiàn)問題。

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

<%@ 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) 保存并運行頁面。因為我們實際的連接還保持完好,所以現(xiàn)在還沒有任何問題。關閉瀏覽器。

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

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

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

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

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

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

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

 

AspNet技術ASP.NET數(shù)據(jù)庫編程之Access連接失敗,轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 久久国产美女 | 午夜激情一区 | 亚洲视频一区二区 | 2021国产精品最新在线 | 999国内精品永久免费视频 | 91精品国产免费久久 | 91精品免费久久久久久久久 | 极品丝袜高跟91极品系列 | 婷婷激情综合 | 精品福利视频第一 | 国产精品v欧美精品v日韩 | 国产成人精品自线拍 | 视频黄在线观看 | 成人免费观看在线网址 | 久久精品亚洲 | 91李宗精品72集在线观看 | 伊人75| 男女朋友做爽爽爽免费视频网 | 在线观看一二三区 | 激情婷婷成人亚洲综合 | 亚洲香蕉久久综合网 | 一本色道 | 欧洲大胆人体 | 六月丁香婷婷网 | 国产精品自产拍在线观看 | 国产乱轮视频 | 久久久国产一区二区三区丝袜 | 亚洲女人天堂网 | 国产老鸭窝毛片一区二区 | 欧美日韩国产在线观看一区二区三区 | 国产线视频精品免费观看视频 | www.一区二区 | 精品久久久久久中文 | avtt亚洲一区中文字幕 | 久久国内精品自在自线400部o | 性xxxx视频| 久久国产成人精品国产成人亚洲 | 国产美女免费观看 | 中文字幕在线国产 | 二级片毛片 | www.成人在线视频 |