数据库级别判断数据重复

  

  建立表语句 在数据库 添加一个表并对字段添加唯一约束。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             }
posted @ 2012-08-11 23:10  likunran  阅读(1364)  评论(0编辑  收藏  举报