惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

The Cloudflare Blog
L
LangChain Blog
WordPress大学
WordPress大学
V
V2EX
M
MIT News - Artificial intelligence
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Stack Overflow Blog
Stack Overflow Blog
J
Java Code Geeks
F
Fortinet All Blogs
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
腾讯CDC
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
D
Docker
Recent Announcements
Recent Announcements
GbyAI
GbyAI
博客园 - 叶小钗
小众软件
小众软件
Hugging Face - Blog
Hugging Face - Blog
T
The Blog of Author Tim Ferriss
人人都是产品经理
人人都是产品经理
Engineering at Meta
Engineering at Meta
Y
Y Combinator Blog
雷峰网
雷峰网
The GitHub Blog
The GitHub Blog

博客园 - 蓝箭GZ

[转载]AgileEAS.NET 敏捷软件开发平台 致力于中小企业快速应用开发 原创:分享通过简单设置提速3D游戏!(如果内存大,请禁用虚拟内存。) 原创:EXT2.0通过ASP动态生成json数据并分页! 原创:分享大内存的XP系统终极优化经验! 原创:VS2005开发的一些实用经验一(VB.NET--WINFORM) 转贴:Vbs脚本编程简明教程! 终于找到一款非常强大的程序代码编辑器PrimalScript v4.0.484汉化版! 空牙-游戏音乐合成视频 转:怀念街机的那段传奇历史 原创:ASP.NET2.0中使用AJAX1.0控件的一点经验 原创:Flash cs3 等软件不能在win2003sp1上安装的问题解决(安装遇到错误无法继续, 无法访问Windows Installer服务......) 原创:简单的ASP无组件上传原理实践总结! 转贴:检测系统颜色与使用字体 原创:我理解的ActiveX组件和对象 (转贴) Microsoft XML 分析器 (MSXML) 的版本列表 (转贴) Microsoft .NET Framework 的版本列表 关于网上的一篇很好的文章(RECORDSET对象详解)所存在的错误! (转贴) ADO.NET的开发场景及传统ADO的处理 (转贴) 数据库设计三大范式应用实例剖析
原创:基于VB的ASP.NET2.0的事务及错误处理
蓝箭GZ · 2008-03-13 · via 博客园 - 蓝箭GZ

有数据库school中的两个表student,course,结构如下:

student

主键:stu_id

stu_name

外键:course_id

course

主键:course_id

        course_name

问题:

当关联表带外键约束时,册除父表项时,由于其关联子表尚不为空,就会出错:

DELETE 语句与 COLUMN REFERENCE 约束 'FK student_ course ' 冲突。该冲突发生于数据库 'school',表 'student', column 'course_id'。语句已终止。

处理:

使用两个GridView,勾选“使用删除”选项,以及它的数据源的高级选项中勾先“生成INSERTUPDATEDELETE语句”

如果只是这样设置,删除时就会出上面的错误提示,如何不弹出这个系统提示,而弹出自己设置的提示信息,以下是一个可行的办法:

1.数据源控件,提供了事务和错误的处理方法,事务方法加入如下代码:

加入命名空间:imports System.Data.Common

2.在数据源控件的deleting事件中加入:

   '这是事务的定义

        Dim cmd As DbCommand = e.Command

        Dim conn As DBconnection = cmd.connection

        conn.Open()

        Dim tran As DbTransaction = conn.BeginTransaction()

        cmd.Transaction = tran

3.在在数据源控件的deleted事件中加入:

'这是事务的处理

        If (e.Exception Is Nothing) Then

            e.Command.Transaction.Commit()

           ‘ MsgBox("删除成功!")
                Response.Write(" <script> alert( '删除成功!'); </script> ")
            

        Else

            e.Command.Transaction.Rollback()

            e.ExceptionHandled = True   这行要加,表示错误已处理,否则错误会继续传下去,还是会出现上面的错误提示

           Response.Write(" <script> alert( '下级子菜单未空,不能删除主菜单!'); </script> ")
         ‘MsgBox("
下级子菜单未空,不能删除主菜单!")   '这个在VS的调试时(服务器端)可以弹出提示窗,正常使用时出错!

        End If

参考:

1. e.Exception --表示增加时发生的异常对象,如果在调用的目标对象上发生异常,查看InnerException对象以取得更多信息。

2. e.ExceptionHandled --表示是否将异常标记为已处理,如果设为true,异常不会传到后面的事件中去。

3. e.ReturnValue --表示你在object data source上设置的InsertMethod返回的值,可以通过此值检查是否成功。

补充:

4. e.ExceptionHandled --表示是否将异常标记为已处理,如果设为true,异常不会传到后面的Page.Error事件中去。否则如果定义了Page.Error事件,先执行Page.Error事件,如果Page.Error没有执行Server.ClearError()方法,异常再传入Application_Error事件中去.未定义Page.Error事件处理程序时,直接传入Application_Error事件中。
5. e.KeepInEditMode --
是否保持Edit模式中,通常如果出错,我们会显示一个错误信息,保持在Edit模式方便用户修改。