我刚刚开始使用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();
}
}
}
答案 0 :(得分:0)
AcceptChanges
不会将数据存储回数据库。它只是在内部将修改后的记录标记为"未更改"。它清除了“肮脏的”#34;标记数据集中所有添加/删除/修改的记录,以使其看起来没有变化。
您需要移除对AcceptChanges
的来电,而是拨打TableAdapter.Update(DataSet)
。
答案 1 :(得分:0)
阅读以下帖子后: Why saving changes to a database fails?
我想出了如何解决这个问题。在解决方案资源管理器中 - >右键单击数据库文件 - >属性 - >复制到输出目录 - >更改为“如果更新则复制”。
这有效地复制了关闭应用程序时对数据库所做的任何更改。