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

C#更新Access数据库数据失败问题求助

解决C# OleDb更新数据库无效的问题

你的代码存在两个核心问题,直接导致更新操作失效:


1. SQL语句语法错误

在UPDATE语句中,[Draiver_Name] = @Draiver_Name后面多了一个逗号,导致WHERE子句前的语法非法,数据库无法解析执行这条语句:

-- 错误写法(多余逗号)
UPDATE Mqar SET ...,[Draiver_Name] = @Draiver_Name,WHERE [ID] = @ID
-- 正确写法
UPDATE Mqar SET ...,[Draiver_Name] = @Draiver_Name WHERE [ID] = @ID

2. 缺少关键匹配参数

@ID的参数添加代码被注释掉了,WHERE [ID] = @ID条件没有对应的参数值,数据库找不到任何符合条件的行,自然不会有数据被修改。


修正后的完整代码

同时加入资源自动管理和更新结果校验,确保代码健壮性:

// 使用using语句自动释放数据库连接和命令资源,避免泄漏
using (OleDbConnection conn = new OleDbConnection("你的数据库连接字符串"))
using (OleDbCommand updateCommand = new OleDbCommand(
    "UPDATE Mqar SET [Car_Type] = @Car_Type,[Model] = @Model,[chase_nu] = @chase_nu,[Engin_Nu] = @Engin_Nu,[Car_nu] = @Car_nu,[Car_State] = @Car_State,[Draiver_Name] = @Draiver_Name WHERE [ID] = @ID", 
    conn))
{
    // 添加所有参数
    updateCommand.Parameters.AddWithValue("@Car_Type", textBox1.Text);
    updateCommand.Parameters.AddWithValue("@Model", textBox2.Text);
    updateCommand.Parameters.AddWithValue("@chase_nu", textBox3.Text);
    updateCommand.Parameters.AddWithValue("@Engin_Nu", textBox4.Text);
    updateCommand.Parameters.AddWithValue("@Car_nu", textBox5.Text);
    updateCommand.Parameters.AddWithValue("@Car_State", comboBox1.Text);
    updateCommand.Parameters.AddWithValue("@Draiver_Name", textBox6.Text);
    // 恢复ID参数,确保能定位到要更新的目标行
    updateCommand.Parameters.AddWithValue("@ID", Convert.ToInt32(textBox7.Text));
    
    conn.Open();
    // 获取受影响行数,判断更新是否真的生效
    int affectedRows = updateCommand.ExecuteNonQuery();
    if (affectedRows > 0)
    {
        MessageBox.Show("تم تعديل بيانات الالية بنجاح");
    }
    else
    {
        MessageBox.Show("未找到匹配的记录,更新失败");
    }
}
connaction();

内容的提问来源于stack exchange,提问作者Ashen_Boy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 10:18:38