繁体   English   中英

在C#中使用oledb用2个键更新数据

[英]update data with 2 keys using oledb in c#

我用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();
            }
    }

请参阅: 使用oledbcommand.executeNonQuery()更新MS Access记录时出现问题,结果未更新

问题是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多个键。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM