爱钻网

数据库级别判断数据重复

编辑:tkgame 来源:爱钻网 时间:2023-03-27

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

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   

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

这时候我写的测试语句 当我第一次执行时 显示 (1 行受影响) 数据库数据正常
第二次执行语句时就会报错
1 消息 2627,级别 14,状态 1,第 1 行
2 违反了 UNIQUE KEY 约束 'AK_TransactionID'。不能在对象 'dbo.TransactionHistoryArchive4' 中插入重复键。
3 语句已终止。

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

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 }
遇见了就不要错过

作者 likunran

更多资讯
游戏推荐
更多+
玩家评论