【问题标题】:C# check if record already exists in database [duplicate]C#检查数据库中是否已存在记录[重复]
【发布时间】:2017-09-25 07:08:33
【问题描述】:

我正在制作一个登录应用程序。但是当我在我的应用程序中创建一个新用户时,当用户已经存在于数据库中时,我会收到一个错误。所以我想给我的标签lblOkToe 一个用户已经存在的错误信息。

这是我正在使用的代码:

    private void btnVoegToe_Click(object sender, EventArgs e)
    {
        // Velden leegmaken

        string Wacht = txtWacht.Text;
        string Login = txtLogin.Text;

        //Parameters Declareren
        SqlParameter Para1 = new SqlParameter();
        SqlParameter Para2 = new SqlParameter();
        Para1.ParameterName = "@Log";
        Para2.ParameterName = "@WW";
        Para1.Value = Login;
        Para2.Value = Wacht;


        // SQL Connectie opzetten
        SqlConnection Conn = new SqlConnection();
        Conn.ConnectionString = @"Integrated Security=true;Initial Catalog=Wachtwoord;Data Source=LAPTOP-PDI9B3LP\SCHOOL";
        Conn.Open();

        SqlCommand cmd = new SqlCommand();
        cmd.Connection = Conn;

        // Alles selecteren van tabel Favorieten
        cmd.CommandText = "insert into gebruik values (@Log, @WW)";

        //Koppelen van SqlParameter met SqlCommand
        cmd.Parameters.Add(Para1);
        cmd.Parameters.Add(Para2);

        int gelukt = cmd.ExecuteNonQuery();

        if (gelukt == 1 && )
        {
            lblOKToe.Text = "De gebruiker" + Login + " is toegevoegd";
            cbKeuze.Items.Add(Login);
            txtLogin.Text = "";
            txtWacht.Text = "";
        }
        // Database connectie sluiten
        Conn.Close();
    }

【问题讨论】:

  • 提示:首先使用传递的参数运行 SELECT 查询。如果返回一行,则表示用户存在并显示警告,否则执行 INSERT.
  • 无关:您可能不想在 GUI 线程上执行所有这些操作。如果 DB I/O 需要更长的时间,它会使您的应用程序无响应。
  • 只需使用 try.. catch。单独的选择存在检查并不能保证插入在多用户环境中不会失败。
  • 对于实现IDisposable 接口的类型,总是使用using(...)

标签: c# sql


【解决方案1】:

这取决于分贝的返回结果:

int gelukt = cmd.ExecuteNonQuery();

如果 gelukt 为 1,则受影响的记录为 1,并且记录已成功插入。

如果 gelukt 为 0,则 SQL INSERT 失败。 很可能是因为您有独特的约束或类似的东西。

所以代码是:

if (gelukt == 1) 
  { 
   lblOKToe.Text = "De gebruiker" + Login + " is toegevoegd"; 
   cbKeuze.Items.Add(Login); 
   txtLogin.Text = ""; 
   txtWacht.Text = ""; 
  }
else //if (gelukt == 0)
  {
    lblOKToe.Text = "Failed to register, use another name.";
  }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-01
    • 1970-01-01
    • 2013-08-07
    • 2021-10-10
    • 1970-01-01
    相关资源
    最近更新 更多