首页 > 解决方案 > 在 C# 中删除数据库 MySQL 中的数据时显示状态

问题描述

显示数据是否删除时的状态时出现问题。这是代码

 public bool isDelete (String nim, String pass)
    {
        String query = "delete from dbmahasiswa where NIM=@NIM AND Password=@Password";
        class_Mahasiswa cm = new class_Mahasiswa();
        try
        {
            connect.Open();
            MySqlCommand cmd = new MySqlCommand(query, connect);
            cmd.Parameters.AddWithValue("@NIM", nim);
            cmd.Parameters.AddWithValue("@Password", pass);
            cmd.ExecuteNonQuery();
            MySqlDataReader reader;
            reader = cmd.ExecuteReader();
            int count = 0;
            while (reader.Read())
            {
                count += 1;
            }
            if (count == 1)
            {
                System.Windows.Forms.MessageBox.Show("sukses!", "Status");
                return true;
            }
            else
                System.Windows.Forms.MessageBox.Show("akun tidak ditemukan", "Status");
            return false;
            connect.Close();
        }
        catch (Exception e)
        {
            System.Windows.Forms.MessageBox.Show(e.Message, "Warning");
            return false;
        }
        return true;
    }

如果我输入错误的用户名或密码,它会显示 MessageBox "akun tidak ditemukan"(找不到帐户)。此外,当我输入正确的用户名和密码来删除它时,它会显示 MessageBox,因为该函数将在数据被删除后读取数据库。

我的问题是,删除数据后如何显示“Sukses”消息框?

标签: c#mysqlvisual-studio

解决方案


您正在调用ExecuteReaderExecuteReader用于读取使用 SELECT 语句从查询返回的数据。您无法使用它来了解是否删除了一行或多行。对于此任务,您只使用ExecuteNonQuery并获取返回值以了解查询命令“影响”的行数

    String query = "delete from dbmahasiswa where NIM=@NIM AND Password=@Password";
    class_Mahasiswa cm = new class_Mahasiswa();
    try
    {
        connect.Open();
        MySqlCommand cmd = new MySqlCommand(query, connect);
        cmd.Parameters.AddWithValue("@NIM", nim);
        cmd.Parameters.AddWithValue("@Password", pass);
        int rows = cmd.ExecuteNonQuery();
        if (rows > 0)
        {
            System.Windows.Forms.MessageBox.Show("sukses!", "Status");
            return true;
        }
        else
        {
            System.Windows.Forms.MessageBox.Show("akun tidak ditemukan", "Status");
            return false;
        }
    }
    catch (Exception e)
    {
        System.Windows.Forms.MessageBox.Show(e.Message, "Warning");
        return false;
    }
    finally
    {
        connect.Close();
    }
}

此外,您似乎正在使用全局连接对象进行连接。这通常是许多错误的来源,例如您的 catch 子句中的错误。如果您的代码导致您忘记关闭连接的异常,并且在下一次调用connect.Open时,您将收到错误消息。我添加了finally以确保正确关闭您的连接对象。但是,更好的做法是将连接保持在您需要它的代码的本地,在 using 语句块内打开以使其关闭并在块的末尾处理


推荐阅读