2014-11-20 72 views
0

我有一个数据源添加到我的C#项目中,它只有几列,用户将输入数据并向数据库添加行,并且还能够搜索特定的行。我无法保存任何更改。当我按下添加按钮时,我的DataGridView出现更改,但当我重新启动我的程序时(我构建并以btw方式导出它,而不是在调试模式下),以前的更改不存在。为什么是这样?无法保存对数据集的更改

//called when the new entry button is clicked, adds new row into DB 
    private void CreatEnrtyBtn_Click(object sender, EventArgs e) 
    { 
     //Create new row to construct 
     BettingDB1DataSet.HorsesRow row = bettingDB1DataSet.Horses.NewHorsesRow(); 

     //Add values to row 
     row.HorseName = this.HorseNameBox.Text; 
     row.Trainer = this.TrainerNameBox.Text; 
     row.Place = this.PlaceBox.Text; 
     row.Location = this.LocationBox.Text; 
     row.Jockey = this.JockeyNameBox.Text; 
     row.Track = this.LocationBox.Text; 
     row.Ground = "temp"; 

     //Add row to DB and commit changes 
     bettingDB1DataSet.Horses.AddHorsesRow(row); 

     //tried both of these on their own, but neither work? 
     horsesTableAdapter.Update(bettingDB1DataSet.Horses); 
     horsesTableAdapter.Update(row); 
    } 

如何创建horsesTableAdapter,如要求:

 private BettingDB1DataSetTableAdapters.HorsesTableAdapter horsesAdapter; 


    public Form1() 
    { 
     InitializeComponent(); 
    } 

    private void Form1_Load(object sender, EventArgs e) 
    { 
     // TODO: This line of code loads data into the 'bettingDB1DataSet2.Horses' table. You can move, or remove it, as needed. 
     this.horsesTableAdapter.Fill(this.bettingDB1DataSet2.Horses); 
     this.dataGridView1.DataSource = bettingDB1DataSet.Horses; 

    } 
+0

您是否遇到任何异常,或者只是正常完成该方法,而不更改数据库? – 2014-11-20 21:30:25

+0

一切顺利。 Row出现在dataGrid中,主键是自动添加的,并包含所有内容。但是当程序再次打开时,没有更改被保存。 – silent 2014-11-20 21:32:54

+0

@silent您正在描述的问题是,重新启动程序后,没有任何内容*被加载到网格中。你是否真的证实了数据库本身没有改变? – BartoszKP 2014-11-20 21:35:37

回答

0
  1. 您使用dataadapter填充bettingDB1DataSet2。
  2. 您网格数据源调用bettingDB1DataSet。
  3. 您正在更新bettingDB1DataSet。

也许这是问题所在。

+0

这似乎是原因,我的项目已经变得有点混乱,所以我要重新考虑每个人的帮助。谢谢 – silent 2014-11-20 22:22:38

0

你接受更新之前???数据集的变化。

bettingDB1DataSet.Acceptchanges(); horsesTableAdapter.Update(bettingDB1DataSet.Horses);

+0

我以前试过,它什么也没做,我也读了AcceptChanges()标记编辑行为非编辑,所以如果我之前调用此更新()那么它不会知道行需要保存? – silent 2014-11-20 21:40:45

+0

你可以展示你如何创建你的horsesTableAdapter? – Harval 2014-11-20 21:45:19

+0

当然,我现在编辑OP。 – silent 2014-11-20 21:48:46