c# - 在 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”消息框?
解决方案
您正在调用ExecuteReader。ExecuteReader用于读取使用 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 语句块内打开以使其关闭并在块的末尾处理
推荐阅读
- c - 如何在main中调用bool函数?
- c# - C#.net 如何在你的程序中添加插件
- node.js - 是否可以将 Puppeteer 与表单数据(多部分/表单数据)一起使用?
- java - Java 8 - 查找超类引用是子类的实例
- android - 我如何在 android studio 中获得原始创建类对话
- aem - 在 clientlibs AEM 上禁用连接
- android - 如何使用片段从图库中获取图像 URI
- python - 您如何找到每个价格值的日期范围?
- yaml - TYPO3:向后端添加 Javascript 模块?
- javascript - 将上传文件设置为新的 FIleList 时,文件上传“更改”事件仅在 safari 中触发