Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 显示数据库MySQL中的数据在C中被删除时的状态#_C#_Mysql_Visual Studio - Fatal编程技术网

C# 显示数据库MySQL中的数据在C中被删除时的状态#

C# 显示数据库MySQL中的数据在C中被删除时的状态#,c#,mysql,visual-studio,C#,Mysql,Visual Studio,我在显示数据是否被删除时的状态时出现问题。这是密码 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 {

我在显示数据是否被删除时的状态时出现问题。这是密码

 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”消息框?

您正在调用ExecuteReader。ExecuteReader用于读取使用SELECT语句从查询返回的数据。您不能使用它来了解一行或多行是否已被删除。对于此任务,只需使用ExecuteNonQuery并获取返回值,即可知道受query命令“影响”的行数

    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();
    }
}

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

我不会在名为isDelete()的函数中显示MessageBox。在布尔函数中只返回true或false。我同意你的观点。希望他们在那里只是为了遵循代码流,尽管使用调试器是唯一的好方法。非常感谢@Steve您的代码工作得很好。谢谢你的解释,这对我很有帮助