我是一名DB编程菜鸟。我需要从文本框字段填充数据库,但是当我尝试将其提交到数据库时,我去查看数据库,我看到的只有Nulls ...没有保存...请帮助..
感谢
private void btnSubmit_Click(object sender, EventArgs e)
{
TradesDataSet.TradesRow newTradesRow = tradesDataSet.Trades.NewTradesRow();
newTradesRow.ID = textBoxTradeID.Text;
newTradesRow.EntryPrice = textBoxEntryPrice.Text;
newTradesRow.ExitPrice = textBoxExitPrice.Text;
tradesDataSet.Trades.Rows.Add(newTradesRow);
tradesDataSet.Trades.AcceptChanges();
try
{
this.Validate();
this.tradesBindingSource.EndEdit();
this.tradesTableAdapter.Update(this.tradesDataSet.Trades);
MessageBox.Show("Update successful");
}
catch (System.Exception ex)
{
MessageBox.Show("Update failed");
}
}
答案 0 :(得分:7)
删除AcceptChanges
电话。数据适配器的Update
方法查看数据库中的更改,并使用更改列表更新实际数据库。它会在更新后自动接受DataSet
中的更改。如果您在更新前手动拨打AcceptChanges
上的DataSet
,则DataAdapter
会认为没有任何更改,也没有做任何事情。
答案 1 :(得分:1)
还有另一种可能性。如果已将数据库添加到项目中并将其“复制到输出目录”属性设置为“始终”,则对旧数据库替换较新的副本时,将对数据库所做的任何更改进行还原。
要防止将该属性设置为“如果更新则复制”或“不复制”
答案 2 :(得分:0)
答案 3 :(得分:0)
private void btnSubmit_Click(object sender, EventArgs e)
{
TradesDataSet.TradesRow newTradesRow = tradesDataSet.Trades.NewTradesRow();
newTradesRow.ID = textBoxTradeID.Text;
newTradesRow.EntryPrice = textBoxEntryPrice.Text;
newTradesRow.ExitPrice = textBoxExitPrice.Text;
tradesDataSet.Trades.Rows.Add(newTradesRow);
//Wrong, this command says that what I have in the dataset is what is in
//the database. You only use this if you manually update the dataset in
//the background.
//tradesDataSet.Trades.AcceptChanges();
try
{
//EndEdit then force a validate.
this.tradesBindingSource.EndEdit();
this.Validate();
//Internally this method calls .AcceptChanges();
this.tradesTableAdapter.Update(this.tradesDataSet.Trades);
MessageBox.Show("Update successful");
}
catch (System.Exception ex)
{
MessageBox.Show("Update failed");
}
}