C#首先做这个陈述

时间:2013-03-26 07:43:42

标签: c# insert-update

我遇到了

的问题
{
   double a = Convert.ToDouble(textBox1.Text);
   double b = Convert.ToDouble(textBox8.Text);
   textBox8.Text = (a + b).ToString();
   textBox1.Text = "";
   double c = Convert.ToDouble(textBox2.Text);
   double d = Convert.ToDouble(textBox9.Text);
   textBox9.Text = (c + d).ToString();
   textBox2.Text = "";
}


//cmd = new OleDbCommand("update Table1 set balance='" + textBox8 + "','" + textBox9.Text + "','" + textBox10.Text + "','" + textBox11.Text + "','" + textBox12.Text + "','" + textBox13.Text + "','" + textBox14.Text + "', where ID=" + textBox15.Text, con);
  cmd = new OleDbCommand("UPDATE Table1 SET OUT = ? " + " WHERE ID = ?", con);
  cmd.Parameters.AddWithValue("OUT", textBox8.Text);
  cmd.Parameters.AddWithValue("OUT", textBox9.Text);
  cmd.Parameters.AddWithValue("ID", textBox15.Text);

  con.Open();

  cmd.ExecuteNonQuery();

  con.Close();
  loaddata();
}

我有2 textbox,一个是平衡,一个是IN

Balance是从我的数据库加载数据,IN允许用户键入值,所以

IN + Balance = Balance,这将更新到数据库。

更新功能是完美的工作。但我如何首先添加值然后运行更新?指教。

1 个答案:

答案 0 :(得分:2)

因为你这样做

textBox8.Text = (a + b).ToString();
textBox9.Text = (c + d).ToString();

这意味着,和是textBox8.TexttextBox9.Text

然后你这样做

cmd.Parameters.AddWithValue("OUT", textBox8.Text); 
cmd.Parameters.AddWithValue("OUT", textBox9.Text); 

,您的查询是:

UPDATE Table1 SET OUT = textbox8.Text  WHERE ID = x
UPDATE Table1 SET OUT = textbox9.Text  WHERE ID = x

当您执行cmd.ExecuteNonQuery()时,OUTID x行中的列Table1会更新两次,

首先,将其值设置为textbox8的文本,然后将其更新为textbox9的值。

我想,这不是你想要的。

对于不同的ID(即不同的行),您可能希望在循环中执行此操作,即

 UPDATE Table1 SET OUT = textbox8.Text WHERE ID = x1
 UPDATE Table1 SET OUT = textbox9.Text WHERE ID = x2

相同的ID但不同的列,即

UPDATE Table1 SET OUT = textbox8.Text, AnotherColumn=textbox9.Text  WHERE ID = x