C#登录应用中Access数据库无法更新/读取问题求助
Access数据库更新后无变化的解决方法
检查数据库文件的复制行为
右键项目中的Access数据库文件 → 属性 → 将“复制到输出目录”设置为如果较新则复制(或直接设为“不复制”)。默认编译逻辑会把项目根目录的数据库文件覆盖bin目录的副本,导致你之前的修改被还原,这是初学者最常踩的坑。改用参数化查询,同时验证更新行数
你的代码用字符串拼接SQL,不仅存在SQL注入风险,还可能因为用户名/密码包含特殊字符(比如单引号)导致SQL执行失败,但界面仍会错误提示“更新成功”。修改后的代码如下:using (var con = new OleDbConnection(你的连接字符串)) { con.Open(); if (txtNewPassword.Text == txtConfirmPassword.Text) { string sql = "update LoginDeets set [Password] = ? where Username = ?"; using (var cmd = new OleDbCommand(sql, con)) { // OleDb参数按顺序匹配占位符,无需严格对应名称 cmd.Parameters.AddWithValue("@Password", txtNewPassword.Text); cmd.Parameters.AddWithValue("@Username", txtUsername.Text); int affectedRows = cmd.ExecuteNonQuery(); lblErrMsg.Text = affectedRows > 0 ? "数据更新成功" : "未找到对应用户,更新失败"; } } else { lblErrMsg.Text = "两次输入的密码不一致"; } }这段代码的优势:
- 彻底规避SQL注入风险
- 通过
affectedRows判断是否真有数据被更新,杜绝虚假成功提示 - 使用
using语句自动释放连接和命令资源,防止数据库连接泄漏
再次确认连接字符串指向
即便你认为连接字符串正确,也再核对一遍:如果用相对路径,确认它指向的是你正在查看的bin目录下的数据库文件,而非项目根目录的原始文件。
内容的提问来源于stack exchange,提问作者Yoki
相关产品推荐
相关产品推荐

