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
相关产品推荐
相关产品推荐

