最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

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

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

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

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

  (2) 添加GridView用來顯示數(shù)據(jù)源控件中的信息。同樣,添加一個(gè)標(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)品的時(shí)候,不應(yīng)該出現(xiàn)問題。

  (5) 現(xiàn)在將添加代碼來處理連接問題了。轉(zhuǎn)到頁面的頂部并進(jìn)入如下腳本。第一個(gè)示例用C#編寫,第二個(gè)示例用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移動(dòng)至C:\Temp文件夾中,這樣連接將會(huì)失敗?;蛘?,可以修改代碼來嘗試連接Southwind.mdb。運(yùn)行頁面并注意瀏覽器將顯示一個(gè)得體的失敗信息。

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

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

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

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

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

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

 

相關(guān)文章

  • .net連接Mysql封裝類代碼 可直接調(diào)用

    .net連接Mysql封裝類代碼 可直接調(diào)用

    下面是我封裝好的連接Mysql數(shù)據(jù)庫的類,直接調(diào)用即可。
    2013-07-07
  • asp.net下獲取Excel所有的工作表名稱

    asp.net下獲取Excel所有的工作表名稱

    asp.net下獲取Excel所有的工作表名稱...
    2007-03-03
  • .NET示波器控件的實(shí)例代碼分析

    .NET示波器控件的實(shí)例代碼分析

    本篇文章是對.NET示波器控件進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • ASP.NET中用healthMonitor屬性用法

    ASP.NET中用healthMonitor屬性用法

    ASP.NET中用healthMonitor屬性用法...
    2006-09-09
  • 獲取DataList控件的主鍵和索引實(shí)用圖解

    獲取DataList控件的主鍵和索引實(shí)用圖解

    一是在DataList控件添加一個(gè)DataKeyField,以便獲取到它的主鍵值,另外還添加了兩個(gè)銨鈕及一個(gè)Label標(biāo)答,用來顯示選擇結(jié)果,真正將來你也許用不上標(biāo)簽,因?yàn)楂@取到結(jié)果之后,就可以進(jìn)行你想的要事情了
    2013-01-01
  • ASP.NET在MVC中MaxLength特性設(shè)置無效的解決方法

    ASP.NET在MVC中MaxLength特性設(shè)置無效的解決方法

    這篇文章主要介紹了ASP.NET在MVC中MaxLength特性設(shè)置無效的解決方法,涉及對MVC中表單元素屬性的應(yīng)用技巧,需要的朋友可以參考下
    2014-11-11
  • .NET Core使用Topshelf方式創(chuàng)建Windows服務(wù)的全過程記錄

    .NET Core使用Topshelf方式創(chuàng)建Windows服務(wù)的全過程記錄

    這篇文章主要給大家介紹了關(guān)于.NET Core使用Topshelf方式創(chuàng)建Windows服務(wù)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • .net?程序通過?crontab?無法啟動(dòng)手動(dòng)執(zhí)行腳本啟動(dòng)的方法

    .net?程序通過?crontab?無法啟動(dòng)手動(dòng)執(zhí)行腳本啟動(dòng)的方法

    .net 網(wǎng)關(guān)程序需要設(shè)置定時(shí)重啟,按照日常操作先把正在運(yùn)行的 PID kill 掉后,再執(zhí)行啟動(dòng)服務(wù)。通過腳本無法啟動(dòng),試著把 .net 程序?qū)懗煞?wù)后,發(fā)現(xiàn)是可以正常重啟的,本文給大家介紹下.net 程序通過 crontab 無法啟動(dòng)手動(dòng)執(zhí)行腳本啟動(dòng),感興趣的朋友一起看看吧
    2021-12-12
  • gridview自動(dòng)排序示例分享

    gridview自動(dòng)排序示例分享

    GridView自帶了數(shù)據(jù)排序功能。在設(shè)計(jì)視圖下,只能對GridView的排序數(shù)據(jù)列和排序方向進(jìn)行靜態(tài)設(shè)置。在后臺(tái)程序中,則需要用Attributes方式對GridView的這兩個(gè)屬性進(jìn)行動(dòng)態(tài)設(shè)置
    2014-01-01
  • ASP.NET MVC中使用JavaScriptResult的用法示例

    ASP.NET MVC中使用JavaScriptResult的用法示例

    這篇文章主要介紹了ASP.NET MVC中使用JavaScriptResult的用法,結(jié)合實(shí)例形式分析了采用javascript動(dòng)態(tài)設(shè)置標(biāo)簽樣式以及使用MVC中的JavaScriptResult來實(shí)現(xiàn)同樣效果的相關(guān)技巧,需要的朋友可以參考下
    2016-08-08

最新評論

丰城市| 卫辉市| 二手房| 苍溪县| 新昌县| 儋州市| 鹤山市| 昌平区| 洮南市| 龙山县| 南安市| 泽普县| 射阳县| 醴陵市| 井冈山市| 太白县| 嘉义市| 正蓝旗| 秀山| 亚东县| 贵定县| 柞水县| 德江县| 长葛市| 海淀区| 西和县| 崇左市| 梨树县| 元谋县| 饶平县| 蛟河市| 岑溪市| 富蕴县| 资源县| 商都县| 五指山市| 三亚市| 承德市| 新泰市| 尼玛县| 澎湖县|