数据库级别判断数据重复

  

  建立表语句 在数据库 添加一个表并对字段添加唯一约束。msdn上认为建唯一约束会自动创建相应的唯一索引。

    

View Code
1 USE AdventureWorks2012;
2 GO
3 CREATE TABLE Production.TransactionHistoryArchive4
4  (
5    TransactionID int NOT NULL, 
6    CONSTRAINT AK_TransactionID UNIQUE(TransactionID) 
7 ); 
8 GO

 

插入测试sql   

View Code
1  INSERT INTO [db].[dbo].[TransactionHistoryArchive4]
2             ([TransactionID])
3            VALUES
4             (1)
5 GO

 

这时候我写的测试语句 当我第一次执行时 显示  (1 行受影响) 数据库数据正常

第二次执行语句时就会报错

View Code
1  消息 2627,级别 14,状态 1,第 12  违反了 UNIQUE KEY 约束 'AK_TransactionID'。不能在对象 'dbo.TransactionHistoryArchive4' 中插入重复键。
3  语句已终止。

 

 

消息2627是我需要的信息。因为C#中提供了SqlException来捕获数据库发生的异常。根据消息id就可以判断出错误类型 好久不写ado代码了

 

View Code
 1             try
 2             {
 3                 using (SqlConnection connection = new SqlConnection(connectionString))
 4                 {
 5                     SqlCommand command = new SqlCommand(queryString, connection);
 6                     command.Connection.Open();
 7                     command.ExecuteNonQuery();
 8                 }
 9 
10             }
11             catch (SqlException sqlException)
12             {
13 
14 
15                 if (sqlException.Number == 2627)
16                     errmsg = "errmsg";
17                 else
18                     errmsg = "其他异常";        
19                 
20                
21             }

转载于:https://www.cnblogs.com/Traner/archive/2012/08/11/likunran.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值