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

使用ADO.Net通过按钮点击更新SQL表记录失败如何解决?

存在的问题&修复方案

你的代码存在几个明显问题,按优先级修复即可实现正常更新:

  • 调用UpdatePerson方法前仅给Person对象的ID、Name属性赋值,未设置Age、Sex属性,这两个字段会使用默认值(int类型默认0、string默认null)写入数据库,不符合更新预期。
  • 更新操作执行完成后没有重新触发GridView的数据查询绑定,界面上显示的还是更新前的旧数据。
  • GridView查询方法中存在变量名错误:声明的数据库实例变量名为database,调用查询方法时误用了未定义的banco变量,会直接导致查询报错。
  • 可选优化:可以捕获ExecuteNonQuery的返回值判断是否有匹配ID的记录被更新,同时利用UpdatePerson的返回值给用户明确的操作反馈。

修正后代码示例

1. 修复更新按钮点击逻辑

private void btn_Update_Click(object sender, EventArgs e)
{
    // 先校验ID输入合法性,避免转换报错
    if (!int.TryParse(txb_Id.Text, out int id))
    {
        MessageBox.Show("请输入正确的数字ID");
        return;
    }

    Person person = new Person();
    person.ID = id;
    person.Name = txb_Name.Text;
    // 补充从界面控件获取Age和Sex赋值,以下控件名请对应你的实际界面修改
    person.Age = int.Parse(txb_Age.Text);
    person.Sex = txb_Sex.Text;

    // 用返回值判断更新结果
    bool updateResult = person.UpdatePerson();
    if (updateResult)
    {
        MessageBox.Show("更新成功");
        // 更新完成后重新查询绑定GridView
        BindGridView();
    }
    else
    {
        MessageBox.Show("更新失败,请检查数据是否正确");
    }
}

2. 封装GridView绑定逻辑,修复变量名错误

// 把GridView绑定逻辑封装为公共方法,查询和更新后都可以直接调用
private void BindGridView()
{
    Database database = new Database();
    string sql = "select * from person";
    // 修复之前的变量名错误,把banco改为正确的database变量
    DataTable dataTable = database.ExecuteGenericSearch(sql);
    dataGridView1.DataSource = dataTable;
}

// 查询按钮点击事件直接调用封装好的方法
private void btn_CG_Click(object sender, EventArgs e)
{
    BindGridView();
}

额外调试建议

如果修复后还是更新失败,可以在UpdatePerson方法的catch块里输出异常的具体信息,或者打印ExecuteNonQuery的返回值:如果返回值为0,说明没有匹配到对应ID的记录,检查传入的ID是否真实存在于数据库的person表中。

另外建议把UpdatePerson里的参数赋值改为按参数名匹配,避免后续新增参数时索引错位:

// 替换原来的索引赋值
cmd.Parameters["@name"].Value = Name;
cmd.Parameters["@age"].Value = Age;
cmd.Parameters["@sex"].Value = Sex;
cmd.Parameters["@id"].Value = Id;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 10:24:05