C#表单保存数据,但在重启程序时它已经消失了

时间:2016-08-09 09:53:20

标签: c# windows forms

我刚刚开始使用C#,并且正在尝试为本地数据库上的数据集创建CRUD。如果我运行我的程序,一切都很好。但是一旦我重新启动它,我在上一个会话中输入的所有数据都消失了。我读了很多像这样的文章,他们说要输入:employeeDataSet.AcceptChanges(); 但即使在那之后它仍然不起作用,任何想法?

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace LocalDatabaseApp
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

    private void employeeInfoBindingNavigatorSaveItem_Click(object sender, EventArgs e)
    {
        this.Validate();
        this.employeeInfoBindingSource.EndEdit();
        this.tableAdapterManager.UpdateAll(this.employeeDataSet);

    }

    private void Form1_Load(object sender, EventArgs e)
    {
        // TODO: This line of code loads data into the 'employeeDataSet.EmployeeInfo' table. You can move, or remove it, as needed.
        this.employeeInfoTableAdapter.Fill(this.employeeDataSet.EmployeeInfo);

    }

    private void addButton_Click(object sender, EventArgs e)
    {
        this.employeeInfoBindingSource.AddNew();
        employeeDataSet.AcceptChanges();
    }

    private void saveButton_Click(object sender, EventArgs e)
    {
        this.Validate();
        this.employeeInfoBindingSource.EndEdit();
        this.tableAdapterManager.UpdateAll(this.employeeDataSet);
        employeeDataSet.AcceptChanges();
    }

    private void removeButton_Click(object sender, EventArgs e)
    {
        this.employeeInfoBindingSource.RemoveCurrent();
        employeeDataSet.AcceptChanges();
    }
}

}

截图 enter image description here

2 个答案:

答案 0 :(得分:0)

AcceptChanges不会将数据存储回数据库。它只是在内部将修改后的记录标记为"未更改"。它清除了“肮脏的”#34;标记数据集中所有添加/删除/修改的记录,以使其看起来没有变化。

您需要移除对AcceptChanges的来电,而是拨打TableAdapter.Update(DataSet)

答案 1 :(得分:0)

阅读以下帖子后: Why saving changes to a database fails?

我想出了如何解决这个问题。在解决方案资源管理器中 - >右键单击数据库文件 - >属性 - >复制到输出目录 - >更改为“如果更新则复制”。

这有效地复制了关闭应用程序时对数据库所做的任何更改。