SQLite中WHERE语句的使用方法及按钮触发数据删除功能实现验证
实现SQLite账户条目删除按钮功能
我已经成功搞定了点击按钮删除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()) { // 删除指定账户 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(); }
后续整理的小建议
虽然当前功能正常,但这段代码有几个可以优化的点,后续整理时可以考虑:
- 目前的SQL字符串拼接写法存在SQL注入风险,建议改用参数化查询,示例如下:
cmd.CommandText = @"DELETE FROM account WHERE accid = @AccId;"; cmd.Parameters.AddWithValue("@AccId", Global.selectedAccountID); - 调整弹窗提示时机:现在是先弹成功提示再执行删除,建议在
cmd.ExecuteNonQuery()执行成功后再弹出提示,避免删除失败却显示成功信息的问题; - 优化连接关闭逻辑:当前在
using块内已经关闭了一次connAccount,末尾又重复调用关闭,可能引发连接已关闭的异常,后续可以统一管理数据库连接的开闭。
内容的提问来源于stack exchange,提问作者Adrian Rowlands
相关产品推荐
相关产品推荐

