C# 我的代码中存在重复密钥的异常

C# 我的代码中存在重复密钥的异常,c#,sql-server,database,datagridview,textbox,C#,Sql Server,Database,Datagridview,Textbox,我有一个表单,其中包含一个“添加”按钮和一个文本框,用于向数据库表添加信息 在插入文本框之前,我需要检查文本框中输入的代码是否可用 我的问题是,我得到了错误,因为它试图添加一个“重复的主键”,我不确定错误的来源 以下是我目前拥有的代码: private void button2_Click(object sender, EventArgs e) { SqlConnection connection1 = new SqlConnection(connectionString); c

我有一个表单,其中包含一个“添加”按钮和一个文本框,用于向数据库表添加信息

在插入文本框之前,我需要检查文本框中输入的代码是否可用

我的问题是,我得到了错误,因为它试图添加一个“重复的主键”,我不确定错误的来源

以下是我目前拥有的代码:

private void button2_Click(object sender, EventArgs e)
{
    SqlConnection connection1 = new SqlConnection(connectionString);
    connection1.Open();

    String reqt1="select numero_cpte from compte where numero_cpte="+textBox1.Text+";";

    SqlCommand sql1 = new SqlCommand(reqt1, connection1);

    int d = int.Parse(textBox1.Text);
    int dd = Convert.ToInt32(sql1.ExecuteScalar());

    if(d == dd) 
    { 
        int o1 = sql1.ExecuteNonQuery();
        MessageBox.Show("this account is not valide!!","Fiche ");
        connection1.Close();
    }

    if (String.IsNullOrEmpty(textBox1.Text) == true)
    {
        MessageBox.Show("You should insert the code!!","Fiche", 
                         MessageBoxButtons.OK,MessageBoxIcon.Information);
    }
    else 
    {
        SqlConnection connection = new SqlConnection(connectionString);
        connection.Open();
        SqlCommand sql = new 
                 SqlCommand("insert into compte values(" + textBox1.Text + ",'" +
                 textBox2.Text + "','" + type_cpteComboBox.SelectedItem.ToString() + 
                 "','" + textBox2.Text + "','" + comboBox1.SelectedItem.ToString() +
                 "'," + comboBox2.SelectedItem.ToString() + ",'" + 
                 checkBox1.Checked.ToString() + "','" + checkBox2.Checked.ToString() + 
                 "','" +textBox5.Text+ "','" +textBox6.Text+ "');", connection);

        int o = sql.ExecuteNonQuery();

        MessageBox.Show(o + "Success of add","Fiche");

        connection.Close();

        textBox1.Text = "";
        textBox2.Text = "";
    }
这就是我看到的错误:


insert命令工作得很好,但是当我尝试测试我要添加到基中的代码是否存在时(通过键入我知道存在的代码),我得到了这个异常。

即使您发现您的号码是重复的,您的代码看起来也会下降到添加代码中。关闭连接后,尝试添加“return;”

MessageBox.Show(“Ce compte existe.Veuillez sasir un numéro de compte valide!!”,“Fiche Comptes”); 连接1.Close()

返回

即使您发现您的号码是重复的,您的代码似乎也会被放入“添加代码”中。关闭连接后,尝试添加“return;”

MessageBox.Show(“Ce compte existe.Veuillez sasir un numéro de compte valide!!”,“Fiche Comptes”); 连接1.Close()

返回

即使您发现您的号码是重复的,您的代码似乎也会被放入“添加代码”中。关闭连接后,尝试添加“return;”

MessageBox.Show(“Ce compte existe.Veuillez sasir un numéro de compte valide!!”,“Fiche Comptes”); 连接1.Close()

返回

即使您发现您的号码是重复的,您的代码似乎也会被放入“添加代码”中。关闭连接后,尝试添加“return;”

MessageBox.Show(“Ce compte existe.Veuillez sasir un numéro de compte valide!!”,“Fiche Comptes”); 连接1.Close()
返回

这样做的好处是,您始终知道,当您完成连接时,您的连接将被关闭。即使只调用此方法一次,它也会提高可读性,因此非常有用

这样做的好处是,您始终知道,当您完成连接时,您的连接将被关闭。即使只调用此方法一次,它也会提高可读性,因此非常有用

这样做的好处是,您始终知道,当您完成连接时,您的连接将被关闭。即使只调用此方法一次,它也会提高可读性,因此非常有用


这样做的好处是,您始终知道,当您完成连接时,您的连接将被关闭。即使只调用此方法一次,它也会提高可读性,因此非常有用。

您的代码编写和格式化非常糟糕。使用UI控件作为直接输入构建SQL命令是一个巨大的安全问题。如果用户在其中一个文本框中键入SQL命令段,该怎么办?此外,youre代码是用法语编写的,这使得不懂法语的人很难阅读。如果需要帮助,请更改它。ok xxbbcc我很抱歉我会翻译它:)Lina,翻译是问题的最小部分-您的示例显示了对SQL的多次调用,并且没有关于您声称来自特定SQL调用的错误的信息。请从示例中删除所有UI交互,并为公共代码使用良好的变量名。添加准确的错误文本并指向引发异常的行。确保向代码的公共版本添加正确的using。(对于您自己使用的版本,可以忽略上面的建议,但请确保提供好看的代码作为公共示例)。您的代码编写和格式都非常糟糕。使用UI控件作为直接输入构建SQL命令是一个巨大的安全问题。如果用户在其中一个文本框中键入SQL命令段,该怎么办?此外,youre代码是用法语编写的,这使得不懂法语的人很难阅读。如果需要帮助,请更改它。ok xxbbcc我很抱歉我会翻译它:)Lina,翻译是问题的最小部分-您的示例显示了对SQL的多次调用,并且没有关于您声称来自特定SQL调用的错误的信息。请从示例中删除所有UI交互,并为公共代码使用良好的变量名。添加准确的错误文本并指向引发异常的行。确保向代码的公共版本添加正确的using。(对于您自己使用的版本,可以忽略上面的建议,但请确保提供好看的代码作为公共示例)。您的代码编写和格式都非常糟糕。使用UI控件作为直接输入构建SQL命令是一个巨大的安全问题。如果用户在其中一个文本框中键入SQL命令段,该怎么办?此外,youre代码是用法语编写的,这使得不懂法语的人很难阅读。如果需要帮助,请更改它。ok xxbbcc我很抱歉我会翻译它:)Lina,翻译是问题的最小部分-您的示例显示了对SQL的多次调用,并且没有关于您声称来自特定SQL调用的错误的信息。请从示例中删除所有UI交互,并为公共代码使用良好的变量名。添加准确的错误文本并指向引发异常的行。确保向代码的公共版本添加正确的using。(对于您自己使用的版本,可以忽略上面的建议,但请确保提供好看的代码作为公共示例)。您的代码编写和格式都非常糟糕。使用UI控件作为直接输入构建SQL命令是一个巨大的安全问题。如果用户在其中一个文本框中键入SQL命令段,该怎么办?此外,youre代码是用法语编写的,这使得不懂法语的人很难阅读。如果需要帮助,请更改它。ok xxbbcc很抱歉我会翻译它:)Lina,翻译是问题的最小部分-您的示例显示了对SQL和th的多次调用
    private object ExecuteScalar(string sql)
    {
        using (SqlConnection connection1 = new SqlConnection(connectionString))
        {
            connection1.Open();
            SqlCommand sql1 = new SqlCommand(sql, connection1);
            return sql1.ExecuteScalar();
        }
    }