You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 08:33:01