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

首頁 > 編程 > .NET > 正文

ASP.NET數據庫編程之Access連接失敗

2024-07-10 13:10:25
字體:
來源:轉載
供稿:網友
  錯誤和失敗總會不可避免地在應用程序中出現。如果有人在mdb目錄之上又添加了一級新的文件夾而“更新”了服務器的目錄樹,那么將會發生什么?如果mdb名稱被更改了會怎樣?如果mdb文件被損壞又該如何呢?以上每一個問題都將阻止對數據的成功連接并導致一個失敗頁面。好的編程實踐表明需要盡可能小心地對待任何失敗。

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

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

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

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

  (1) 在ch02文件夾中,創建一個名為tio-4-connectionfailure-cs.aspx的文件。在design視圖中,添加一個指向northwind 的accessdatasource控件至頁面,該控件從表中選擇了所有列。

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

  (3) 現在切換至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售出的產品的時候,不應該出現問題。

  (5) 現在將添加代碼來處理連接問題了。轉到頁面的頂部并進入如下腳本。第一個示例用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) 保存并運行頁面。因為我們實際的連接還保持完好,所以現在還沒有任何問題。關閉瀏覽器。

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

  (8) 如果移動了northwind.mdb,那么將其再移動回c:/begaspnetdb/ app_ data文件夾中。

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

  首先,請回想一下accessdatasource控件是sqldatasource的派生物,并且使用了應用于oledb數據源的一系列異常,所以當引用了帶有sql或者oledb名稱而不是access名稱的對象時,請不要驚訝。

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

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

  這段代碼中的最大的竅門就是始終讓對象使用了三個不同的名稱。使用了一個access文件(mdb)作為數據源并使用accessdatasource控件。但是使用了底層的sqldatasource作為事件參數。最后,使用了普通的oledb異常集。很多錯誤都源于在所有的情況下都使用名為access的asp.net 2.0對象。菜鳥學堂:
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 永康市| 定边县| 凤冈县| 来宾市| 油尖旺区| 绥棱县| 镇康县| 鄂托克旗| 宁蒗| 吉林省| 齐齐哈尔市| 黎城县| 西吉县| 拜城县| 双辽市| 青海省| 万州区| 西平县| 法库县| 白银市| 云浮市| 吴桥县| 宁海县| 巫溪县| 临洮县| 沈丘县| 泰安市| 吉木萨尔县| 江城| 岚皋县| 崇左市| 井冈山市| 七台河市| 错那县| 东方市| 琼中| 扶风县| 永胜县| 南投县| 新余市| 常山县|