数据集不会提交到数据库

时间:2010-01-10 06:11:07

标签: c# sql dataset

我是一名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");
        }
    }        

4 个答案:

答案 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"); 
    } 
}