我在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();
}
}
答案 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个以上的密钥。