SQL Server重复插入

时间:2015-04-28 20:07:04

标签: c# sql-server sql-insert duplicates


我有一个项目(使用c#和SQLServer),它应该在多个客户端上运行,每个客户端应该与中央SQL Server通信。所有客户端和服务器都在同一个本地网络上 一切都很好,但是......在某些情况下,当在客户端上运行插入查询时,会有多个重复记录插入到sql server中。这个问题很少发生 以下是查询。填写表单并按下按钮单击事件时,查询将运行。

public static int insertSick(string firstname,string lastname,string mobile,string address)
    {
        using (SqlConnection connection = new SqlConnection(getConnectionString()))
        {
            string sql = "insert into TSick (Firstname,Lastname,MobileNumber,Address) values
                    (@fname,@lname,@mobile,@address)";

            connection.Open();
            SqlTransaction tran = connection.BeginTransaction();
            SqlCommand command = new SqlCommand(sql, connection, tran);
            command.Parameters.AddWithValue("fname", firstname);
            command.Parameters.AddWithValue("lname", lastname);
            command.Parameters.AddWithValue("mobile", mobile);
            command.Parameters.AddWithValue("address", address);

            int nRecord = command.ExecuteNonQuery();
            tran.Commit();
            return nRecord;
        }
    }
private void Button_Click_1(object sender, RoutedEventArgs e)
    {
          // check the text fields and validate them
          insertSick(firstname,lastname,mobile,address);
    }

表格如下:

TSick :
     - ID --> this column is an incremental identity
     - Firstname
     - Lastname
     - Mobilenumber
     - Address

有人能告诉我为什么在某些情况下会插入多条记录而不是单条记录?怎么解决?你认为这是一个与网络有关的问题吗?

感谢

2 个答案:

答案 0 :(得分:0)

几乎可以肯定,用户点击按钮两次。您应该在单击事件处理程序中首先禁用该按钮,然后在适当的时候再次启用它;是什么构成了适当的时间"由你决定。

答案 1 :(得分:0)

在表中插入数据之前,您可以对数据进行验证,无论数据是否重复。

首先检查表中哪一列是唯一的,根据唯一列,您可以检查数据,否则在表中创建一个复合键(如果没有唯一列)并在插入之前验证数据。如果数据通过消息重复发送给用户。