首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在C#中处理特定的SQL异常(例如,违反唯一约束)?

如何在C#中处理特定的SQL异常(例如,违反唯一约束)?
EN

Stack Overflow用户
提问于 2009-11-03 11:56:40
回答 5查看 20K关注 0票数 7

我的问题是如何处理c#中的sql异常,有没有办法检查一下数据访问层抛出了什么样的sql异常?例如,如果db抛出唯一约束异常或外键异常,有没有办法从c#捕获它?对于这些数据库异常,您使用的异常处理模式是什么?

EN

回答 5

Stack Overflow用户

发布于 2009-11-03 12:07:25

看一看documentation of the SqlException类,特别是它的properties:例如,SqlException.Number应该允许您识别哪种类型的SqlException (唯一约束、外键等)。发生了。

您可以使用筛选的异常来捕获特定的错误。VB.NET:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Try
    ...
Catch ex as SqlException When ex.Number = ...
    ...
Catch ex as SqlException When ex.Number = ...
    ...
End Try

C# (版本6及以上):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
try
{
    ...
}
catch (SqlException ex) when (ex.Number == ...)
{
    ...
}
catch (SqlException ex) when (ex.Number == ...)
{
    ...
}
票数 8
EN

Stack Overflow用户

发布于 2009-11-03 12:04:32

您可以检查消息文本,编号,并在其上进行大小写切换,以了解错误...

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
try {
}
catch (SqlException ex)
{
 string str;
        str = "Source:"+ ex.Source;        
        str += "\n"+ "Number:"+ ex.Number.ToString();
        str += "\n"+ "Message:"+ ex.Message;
        str += "\n"+ "Class:"+ ex.Class.ToString ();
        str += "\n"+ "Procedure:"+ ex.Procedure.ToString();
        str += "\n"+ "Line Number:"+ex.LineNumber.ToString();
        str += "\n"+ "Server:"+ ex.Server.ToString();

        Console.WriteLine (str, "Database Exception");
}
票数 1
EN

Stack Overflow用户

发布于 2009-11-03 12:07:43

这取决于异常和您的数据库后端。您的数据库将为特定的内容(如约束、权限等)生成唯一的错误代码,但该错误代码在不同的数据库中有所不同。甲骨文有一个庞大的pdf (2000+ pages),其中列出了它可能抛出的每一个可能的错误,我相信Sqlserver也有类似的东西。我的观点是,你需要寻找特定的错误代码,然后你需要对catch部分中的那些代码进行trp,并以不同的方式处理它们,而不是你可以得到的大量其他错误。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1666887

复制
相关文章
唯一约束和唯一索引区别是什么_db2违反唯一索引的约束
约束和索引, 前者是用来检查数据的正确性,后者用来实现数据查询的优化,目的不同。 唯一性约束与唯一索引有所不同:
全栈程序员站长
2022/09/30
1K0
约束和异常处理
⾸先, 你要清楚. 约束是对类的约束.  比如. 现在. 你是一个项⽬经理. 然后呢. 你给手下 的人分活. 张三, 你处理一下普通用户登录,
py3study
2020/02/10
6450
Oracle违反约束数据的workaround
最近为测试做一些数据导入,其中存在一些主子表,由于种种原因,子表有些记录,外键值在主表无记录,导致数据导入过程中,无法创建外键,
bisal
2019/01/30
8650
Cause: org.postgresql.util.PSQLException: 错误: 重复键违反唯一约束
SpringBoot 项目使用 Mybatis 框架进行开发,相应的表已经配置了主键自增。
wsuo
2021/11/08
1.5K0
Cause: org.postgresql.util.PSQLException: 错误: 重复键违反唯一约束
Oracle中唯一约束和唯一索引的区别
在使用TOAD来操作Oracle数据库时,会注意到创建约束时有Primary Key、Check、Unique和Foreign Key四种类型的约束,这与SQL Server中的约束没有什么区别,这里的Check约束除了用于一般的Check约束外,在Oracle中也用于非空约束的实现。也就是说如果一个字段不允许为空,则系统将会创建一个系统的Check约束,该约束定了某字段不能为空。
深蓝studyzy
2022/06/16
1.3K0
Oracle中唯一约束和唯一索引的区别
谈谈唯一约束和唯一索引的关系_唯一约束和主键约束的一个区别是
最近在看数据库相关知识,感觉唯一约束和唯一索引好像有点类似,于是研究了一番,于是就有了这篇文章。
全栈程序员站长
2022/11/08
1.7K0
谈谈唯一约束和唯一索引的关系_唯一约束和主键约束的一个区别是
Oracle SQL 异常处理
有预定义异常 与 用户自定义异常 还有 raise_application_error()函数 raise_application_error() 只能把异常抛出而不能处理异常。
星哥玩云
2022/08/17
6680
Oracle SQL 异常处理
ora-01006:绑定变量不存在_ora-00001: 违反唯一约束条件
java.sql.SQLException: ORA-01008: 并非所有变量都已绑定
全栈程序员站长
2022/10/04
5170
主键和唯一约束的索引肯定唯一?
这两天在开发过程中,有个需求,就是找出某个schema的所有主键索引和唯一约束索引的名称,逻辑中用到了dba_indexes,其中存在一个字段叫UNIQUENESS,官方文档解释是说该字段会标记索引是唯一的(UNIQUE)还是非唯一的(NONUNIQUE),能不能这样理解,对主键索引和唯一约束索引来说,这个字段应该是UNIQUE?
bisal
2021/09/06
1.3K0
主键和唯一约束的索引肯定唯一?
必备 .NET - C# 异常处理
欢迎查看首个“必备.NET”专栏。您可以在其中了解 Microsoft .NET Framework 领域的所有最新动态,无论是 C# vNext 的最新进展(当前是 C# 7.0)、改进的 .NET 内部结构,还是 Roslyn 和 .NET 核心前端的最新动态(如转为开放源代码的 MSBuild)。 自 .NET 于 2000 年发布预览版以来,我一直在撰写和开发与 .NET 有关的内容。我撰写的大部分内容不仅限于新生事物,而是关于如何利用相应技术,并着眼于最佳做法。 我住在美国华盛顿州斯波坎市,我是
逸鹏
2018/04/09
2.4K0
python的中异常处理处理ZeroDivisionError异常处理 FileNotFoundError 异常异常时保持静默
Python 使用被称为 异常 的特殊对象来管理程序执行期间发生的错误。每当发生让 Python 不知所措的错误时,它都会创建一个异常对象。如果你编写了处理该异常的代码,程序将继续运行;如果你未对异常进行处理,程序将停止,并显示一个 traceback ,其中包含有关异常的报告。异常是使用 try-except 代码块处理的。 try-except 代码块让 Python 执行指定的操作,同时告诉 Python 发生异常时怎么办。使用了 try-except 代码块时,即便出现异常,程序也将继续运行:显示你编写的友好的错误消息,而不是令用户迷惑的 traceback 。
章鱼喵
2018/09/26
6.1K0
SQL约束
1.概念:约束作用于表中字段上的规则,用于限制存储在表中的数据 2.目的:保证数据库中数据的正确、有效性和完整性 3.分类
海盗船长
2023/10/11
1970
Spring | 如何在项目中优雅的处理异常 - 全局异常处理以及自定义异常处理
在快速迭代和持续交付的今天,软件的健壮性、可靠性和用户体验已经成为区别成功与否的关键因素。特别是在Spring框架中,由于其广泛的应用和丰富的功能,如何优雅地处理异常就显得尤为重要。本文旨在探讨在Spring中如何更加高效、准确和优雅地处理异常,帮助开发者更好地构建和维护Spring应用。
kfaino
2023/09/26
3.8K0
Spring | 如何在项目中优雅的处理异常 - 全局异常处理以及自定义异常处理
SQL约束
在MySQL中有四类约束。分别是:主键约束(primary key),非空约束(not null),唯一约束(unique),外键约束(foreign key)。
zy010101
2020/12/25
5940
java中的异常和异常处理
Java的基本理念是“结构不佳的代码不能运行”,在我们进行编写代码的时候一般通过编译的时候就可以看出代码是否有错误,但是在这一阶段并不能处理完成所有的异常,如一些不可预知的情况,在运行期间才会暴露。所以Java中对异常做出了如下归类。
袁新栋-jeff.yuan
2020/08/26
1.9K0
java中的异常和异常处理
MySQL数据库——表的约束(非空约束、唯一约束、主键约束、外键约束)
约束,是对表中的数据进行限定,保证数据的正确性、有效性和完整性,约束分为以下几类:
Winter_world
2020/09/25
14.6K0
MySQL数据库——表的约束(非空约束、唯一约束、主键约束、外键约束)
数据库约束-主键约束-唯一约束-非空约束-默认值
约束其实就是一种限制,用于修饰表中的列. 通过这种限制来保证表中数据的正确性、有效性和完整性。
Devops海洋的渔夫
2022/01/17
6.4K0
数据库约束-主键约束-唯一约束-非空约束-默认值
Java 中的异常处理
在 Java 中,所有的异常都有一个共同的祖先java.lang包中的 Throwable类。Throwable: 有两个重要的子类:Exception(异常) 和 Error(错误) ,二者都是 Java 异常处理的重要子类,各自都包含大量子类。
崔笑颜
2020/06/08
1.3K0
Java中的异常处理
Java的基本设计思想是“Badly formed code will not be run!”。这句话的大致意思是:错误形式的代码不会被运行。 我们在写代码的时候,提升错误恢复能力是提升代码健壮的重要措施。而“为了创建一个更加健壮的系统,那么每一个组件都必须是健壮的”。从而,在Java中出现了异常处理机制。 不像C语言,基本处理错误的代码都是程序员写上去的,而在Java中,除非是要自己自定义异常的时候,我们一般都是通过异常处理代码块来解决问题的。不但提高了代码的健壮性,还提高了代码的可读性。 那么,异常处理的定义是什么呢?当程序运行时出现了异常(不是错误),可能是空指针异常等等很多异常,能够对当前出现异常的代码进行处理,或是直接报告异常,或是将异常抛给特定的位置进行决断处理。 同大多数的需求一样,异常处理也被设计者设计成了一个类:Throwable。在这个类的下面,又有Error(错误)、和Exception(异常)。Error(错误)一般情况下不会通过代码进行处理,因为一般能报错误的情况,都是十分严重的情况,大多数错误都是由JVM(Java虚拟机)引起的。例如下面的代码:
roobtyan
2019/02/21
1.3K0
Java中的异常处理
Python中的异常处理
异常的处理机制 try: result = 4 / 0 except Exception as e: print('输出异常:'+str(e)) else: print("try子句没有异常,输出result结果:", result) finally: print("程序结束,无论try子句是否有异常这条语句都会被执行!") ''' 输出: 输出异常:division by zero 程序结束,无论try子句是否有异常这条语句都会被执行! ''' 首先,执行try子句
K同学啊
2019/01/22
1.5K0

相似问题

sql约束违反异常

113

Spring处理唯一的约束违反

10

如何在违反约束异常后继续处理?

14

Spring处理唯一的约束违反

12

Kotlin公开的异常处理-如何捕获唯一的违反约束的异常?

22
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文