使用c#中的oledb使用2个键更新数据

时间:2015-04-09 19:06:42

标签: c# ms-access oledb

我在c#中创建了项目,并将其与数据库连接在一起,共有2个表。 第一张表是Tcostumers关于客户的详细信息,效果很好。 第二个表格是关于每年每个客户的报告的Treports。 他们的钥匙是cid和cyear。 我成功地制作了一个按钮,为客户插入新的一年。 问题是更新cinfo的更新按钮。 运行程序时没有错误,但它没有保存信息。 这是我的代码:

 private void button2_Click(object sender, EventArgs e)
    {
            OleDbCommand command = new OleDbCommand(@"UPDATE Treports
                                                SET cinfo = @cinfo
                                                    WHERE cid = @cid,
                                                          cyear = @cyear", connect);

            command.Parameters.AddWithValue("@cinfo", textBox2.Text);
            command.Parameters.AddWithValue("@cid", textBox3.Text);
            command.Parameters.AddWithValue("@cyear", textBox1.Text);

            try
            {
                connect.Open();
            }
            catch (Exception expe)
            {
                MessageBox.Show(expe.Source);
            }
            try
            {
                command.ExecuteNonQuery();

            }
            catch (Exception expe)
            {
                MessageBox.Show(expe.Source);
            }
            finally
            {
                connect.Close();
            }
    }

1 个答案:

答案 0 :(得分:0)

请参阅:Issue in updating MS Access records using oledbcommand.executeNonQuery(), result not updating

问题是OleDbCommand不支持命名参数:

替换:

command.Parameters.AddWithValue("@cinfo", textBox2.Text);
command.Parameters.AddWithValue("@cid", textBox3.Text);
command.Parameters.AddWithValue("@cyear", textBox1.Text);

使用:

command.Parameters.AddWithValue("?", textBox2.Text);
command.Parameters.AddWithValue("?", textBox3.Text);
command.Parameters.AddWithValue("?", textBox1.Text);

我在使用OleDbCommand的工作中使用AS / 400,当我说这是我曾经处理的屁股中最大的痛苦时,请相信我。我们的一些表有10个以上的密钥。