Visual Studio 2022/C#:删除数据前如何检查记录是否存在?
实现思路与修改后的代码
核心逻辑是先验证目标Rank对应的记录是否存在,再决定执行删除操作还是提示记录不存在,同时优化数据库资源的管理方式。
修改后的完整代码:
protected void bn_delete_Click(object sender, EventArgs e) { string rank = tb_rank.Text; string notification = string.Empty; // 检查目标记录是否存在 string checkExistQuery = "SELECT COUNT(*) FROM MovieList WHERE Rank = @Rank"; using (OleDbConnection dbConn = new OleDbConnection(connectionString)) { dbConn.Open(); // 执行存在性检查 using (OleDbCommand checkCmd = new OleDbCommand(checkExistQuery, dbConn)) { checkCmd.Parameters.AddWithValue("@Rank", rank); int existingCount = (int)checkCmd.ExecuteScalar(); if (existingCount > 0) { // 记录存在,执行删除 string deleteQuery = "DELETE FROM MovieList WHERE Rank = @Rank"; using (OleDbCommand deleteCmd = new OleDbCommand(deleteQuery, dbConn)) { deleteCmd.Parameters.AddWithValue("@Rank", rank); deleteCmd.ExecuteNonQuery(); notification = "Movie deleted"; } } else { // 记录不存在,设置提示文本 notification = "Movie not exists"; } } } // 弹出提示框 ClientScript.RegisterStartupScript(this.GetType(), "myalert", $"alert('{notification}');", true); }
关键调整说明
- 新增存在性验证:通过
SELECT COUNT(*)查询目标Rank的记录数量,用ExecuteScalar快速获取结果,判断是否有可删除的记录。 - 用
using管理资源:数据库连接和命令对象都通过using语句包裹,自动完成资源释放,避免手动关闭连接可能引发的资源泄漏问题。 - 分支逻辑处理:根据检查结果分别执行删除操作或设置不存在的提示信息,最后统一触发前端提示。
- 复用数据库连接:在同一个连接会话中完成检查和删除操作,减少数据库连接的建立开销。
内容的提问来源于stack exchange,提问作者Spencer Hon
相关产品推荐
相关产品推荐

