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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 00:22:33