數(shù)據(jù)庫級(jí)別判斷數(shù)據(jù)重復(fù)
建立表語句 在數(shù)據(jù)庫 添加一個(gè)表并對(duì)字段添加唯一約束。msdn上認(rèn)為建唯一約束會(huì)自動(dòng)創(chuàng)建相應(yīng)的唯一索引。
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
這時(shí)候我寫的測試語句 當(dāng)我第一次執(zhí)行時(shí) 顯示 (1 行受影響) 數(shù)據(jù)庫數(shù)據(jù)正常
第二次執(zhí)行語句時(shí)就會(huì)報(bào)錯(cuò)
1 消息 2627,級(jí)別 14,狀態(tài) 1,第 1 行
2 違反了 UNIQUE KEY 約束 'AK_TransactionID'。不能在對(duì)象 'dbo.TransactionHistoryArchive4' 中插入重復(fù)鍵。
3 語句已終止。
消息2627是我需要的信息。因?yàn)镃#中提供了SqlException來捕獲數(shù)據(jù)庫發(fā)生的異常。根據(jù)消息id就可以判斷出錯(cuò)誤類型 好久不寫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 }
遇見了就不要錯(cuò)過
作者 likunran
關(guān)鍵詞:數(shù)據(jù)庫
閱讀本文后您有什么感想? 已有 人給出評(píng)價(jià)!
- 0
- 0
- 0
- 0
- 0
- 0