注册通行证 用户名 密码
  • 文章投稿
  • 博客
  • 论坛
  • 设为首页
  • 加入收藏
jztop.com网络技术
  • 首页
  • | iT新闻
  • | 操作系统
  • | 组网建网
  • | 网络安全
  • | 程序开发
  • | 办公一族
  • | 工具软件
  • | 网页制作
  • | 多媒体制作
  • | 网吧技术
  • | 服务器
  • | 专题教程
Vista | 软件评测 | 系统备份 | 优化 | 进程 | 聊天 | 病毒 | Linux | 黑客 | 防火墙 | 数据库 | Web开发 | Java | Word | 游戏 | 32位开发 | 移动开发
当前位置:首页 > 程序开发 > 微软开发专栏 > ASP.NET 内容正文:ASP.NET数据库编程之Access连接失败

ASP.NET数据库编程之Access连接失败

发布时间:2006-06-19 08:57:00 来源:csdn 网友评论 0 条
  错误和失败总会不可避免地在应用程序中出现。如果有人在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对象。
相关文章
    无相关信息
【评论】【收藏本文】【打印】【关闭】
上一篇文章:ASP.NET2.0服务器控件之创建复杂属性
下一篇文章:ASP.NET 2005 Treeview终极解决方案
讨论区
查看
已有 0 位对此新闻感兴趣的网友发表了看法
匿名发表
注册通行证 登陆
图文阅读推荐
推荐阅讯
  • ASP.NET 2.0客户端回调的实现分析
  • 在ASP.NET Atlas中创建自定义Behavior
  • 用ASP.NET设计高效邮件列表
  • ASP.NET 2.0打造购物车和支付系统之一
  • ASP.NET底层架构探索之再谈.NET运行时
  • .NET设计模式研究之装饰模式
  • ASP.NET服务器控件之控件状态
  • ASP.NET2.0导航功能之配置会员和角色
  • .NET正则表达式使用高级技巧之工作特点
  • 10天学会ASP.net之第六天
阅读排行
  • 1.用ASP.NET 2.0设计网络在线投票系统
  • 2.在ASP.Net 2.0中实现多语言界面的方法
  • 3.轻松加密ASP.NET 2.0 Web程序配置信息
  • 4.在ASP.NET中使用AJAX的简单方法
  • 5..NET 2.0中的企业库异常处理块简述
  • 6.面向.NET开发人员的Ajax 技术平台策略
  • 7.揭开ASP.NET中Cookie编程的奥秘
  • 8.ASP.NET2.0服务器控件之创建自定义控件
  • 9.ASP.NET2.0中Gridview中数据操作技巧
  • 10.ASP.NET 2.0发送电子邮件全面剖析之二
专题教程
  • 大话G游 专题:手机病毒揭密
  • ARP攻击防范与解决方案 路由故障处理手册
  • Picasa中文版_Picasa教程 专题:清除流氓软件
  • Firefox专题 seo搜索引擎优化专区
  • 重装Windows必知的事情 装机之必备软件大行动
病毒专杀栏
  • 杀毒软件反被病毒杀 连"救命"都不能喊
  • 金山ARP防火墙
  • 还原卡神话破灭“机器狗”病毒来势汹汹
  • cctv经济半小时:你的手机现在安全吗?
  • 新挂马方式开始流行 ARP挂马称雄局域网
  • 木马和病毒清除的通用解法
  • IP地址不再冲突 查找ARP攻击者元凶
  • 教你几招识别和防御Web网页木马
  • 分析:封杀BT只是暂时的止痛药
  • QQ爆危险漏洞,“QQ游戏邀请大盗”邀请你玩病
关于我们 | 诚聘英才 | 联系我们 | 版权声明 | 网站大事 | 网站地图 | 意见建议
CopyRight 2005-2007 Jztop.Com 版权所有 未经许可 请勿转载