【问题标题】:Update issue MS Access/C#更新问题 MS Access/C#
【发布时间】:2020-10-12 06:56:02
【问题描述】:

我已尝试通过 c# 更新 MS 数据库。虽然我没有收到任何错误,但它并没有更新数据库

    private void Button1_Click(object sender, EventArgs e)
    {
        conn.Open();
        string UpdateQuery = "Update NDS Set IATACode=@p2,City=@p3,Country=@p4 where ID=@p1";
        OleDbCommand Update1 = new OleDbCommand(UpdateQuery, conn);
                Update1.Parameters.AddWithValue("@p1", txtId.Text);
                Update1.Parameters.AddWithValue("@p2", txtIata.Text);
                Update1.Parameters.AddWithValue("@p3", txtCity.Text);
                Update1.Parameters.AddWithValue("@p4", txtCountry.Text);
                Update1.ExecuteNonQuery();
        conn.Close();
        ClearData();
        ShowData();
        MessageBox.Show("Updated");
    }

【问题讨论】:

  • 在更新/插入/删除查询后,此基础是否需要“提交”命令?

标签: ms-access insert-update


【解决方案1】:

OLEDB 不支持命名参数。您需要按顺序提供参数:

private void Button1_Click(object sender, EventArgs e)
{
    conn.Open();
    string UpdateQuery = "Update NDS Set IATACode=@p2,City=@p3,Country=@p4 where ID=@p1";
    OleDbCommand Update1 = new OleDbCommand(UpdateQuery, conn);
    Update1.Parameters.AddWithValue("@p2", txtIata.Text);
    Update1.Parameters.AddWithValue("@p3", txtCity.Text);
    Update1.Parameters.AddWithValue("@p4", txtCountry.Text);
    Update1.Parameters.AddWithValue("@p1", txtId.Text);
    Update1.ExecuteNonQuery();
    conn.Close();
    ClearData();
    ShowData();
    MessageBox.Show("Updated");
}

【讨论】:

  • 嗨,埃里克。感谢您的回答。我对保存按钮有相同的参数,它正在工作。您的评论是更新价值的例外吗?
  • 不。查询中的命名参数不应该在任何地方工作,并且隐式转换为有序参数。如果偶然,它们被正确订购,它当然会起作用。否则,我会三重检查您没有将值插入错误的字段。这个查询没有更新任何东西的事实只是因为它是由一个参数过滤的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多