• 数据库级别判断数据重复


      

      建立表语句 在数据库 添加一个表并对字段添加唯一约束。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             }
  • 相关阅读:
    HDU_1006_Tick and Tick
    HDU_1011_Starship Troopers_树型dp
    HDU_1520_Anniversary party_树型dp
    HDU_1176_免费馅饼_16.4.23再做
    HDU_1203_01背包
    HDU_1421_搬寝室_dp
    HDU_1505_矩阵中的最大矩形_dp
    STL_map的使用
    Semantic-UI-React (称 stardust) 对比 Antd
    meteor 为基础,联合 Apollo + React + React-Router
  • 原文地址:https://www.cnblogs.com/Traner/p/likunran.html
Copyright © 2020-2023  润新知