数据库级别判断数据重复
建立表语句 在数据库 添加一个表并对字段添加唯一约束。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,第 1 行 2 违反了 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 }
遇见了就不要错过