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您的代码工作得很好。谢谢你的解释,这对我很有帮助