【发布时间】:2021-05-29 16:31:17
【问题描述】:
我已经得到了 sqlite 查询来删除数据库中的一个按钮,单击按钮现在一切正常,我不需要最后有第二个 WHERE 语句。毫无疑问,我需要稍微清理一下我的代码,但我只是想确保它首先能正常工作
private void btn_Delete_Click(object sender, EventArgs e)
{
DialogResult dialogResult = MessageBox.Show("Are you sure you want to delete this account?", "Confirm Delete", MessageBoxButtons.YesNo);
if (dialogResult == DialogResult.Yes)
{
connAccount.Open();
using (SQLiteCommand cmd = connAccount.CreateCommand())
{
// adds customers details to the database
cmd.CommandText = @"DELETE FROM account WHERE accid = '" + Global.selectedAccountID.ToString() + "';";
MessageBox.Show("Account Deleted", "Account Deleted", MessageBoxButtons.OK, MessageBoxIcon.Information);
cmd.ExecuteNonQuery();
connAccount.Close();
}
}
if(dialogResult == DialogResult.No)
{
}
if (cb_active.SelectedIndex == 0)
{
active();
}
if (cb_active.SelectedIndex == 1)
{
inactive();
}
else
{
showAccounts();
}
cb_active.SelectedIndex = -1;
connAccount.Close();
}
【问题讨论】:
-
DGV 不会自动重绘。所以你必须再次读取数据库。确保重新绘制 DGV 将数据源设置为 null : datagridview1.DataSource = null; datagridview1.DataSource = dt.
-
SQL Injection alert - 您应该不将您的 SQL 语句连接在一起 - 使用 参数化查询 来避免 SQL 注入 - 查看Little Bobby Tables
-
我不是 C# 专家,但我猜
ExecuteDeleteQuery()是一个自定义方法,它实际上执行删除操作。所以你应该发布它的代码。 -
什么类型是 custid 并且在您的数据库中处于活动状态
-
ExecuteNonQuery()的返回值为删除的行数,可以查看:docs.microsoft.com/en-us/dotnet/api/…