public EmployeeForm()
{
this.bindingSource = new BindingSource();
this.Load += new EventHandler(EmployeeForm_Load);
}
private void EmployeeForm_FormClosing(object sender, FormClosingEventArgs e)
{
this.connection.Close();
this.connection.Dispose();
}
private void RetrieveDataFromTheDatabase()
{
string connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="Employee.mdb"";
this.connection = new OleDbConnection(connectionString);
this.connection.Open();
OleDbCommand command = connection.CreateCommand();
command.CommandText = "Select * From Employee";
this.adapter = new OleDbDataAdapter();
this.adapter.SelectCommand = command;
this.dataset = new DataSet();
this.adapter.Fill(dataset, "Employee");
OleDbCommandBuilder commandBuilder = new OleDbCommandBuilder(this.adapter);
commandBuilder.ConflictOption = ConflictOption.OverwriteChanges;
commandBuilder.GetInsertCommand();
commandBuilder.GetDeleteCommand();
commandBuilder.GetUpdateCommand();
}
private void BindControls()
{
this.bindingSource.DataSource = this.dataset.Tables[0];
this.dgvEmployee.DataSource = this.bindingSource;
}
void FileSave_Click(object sender, EventArgs e)
{
this.adapter.Update(this.dataset, "Employee");
this.dgvEmployee.EndEdit();
this.bindingSource.EndEdit();
}
我想保存所有的数据更改到数据库时,保存按钮被点击。我所拥有的代码不会对数据库进行更改。我还想在成功保存后禁用保存按钮。
您可以让visual studio为您编写所有这些代码,包括保存内容:
- 确保你在一个。net框架项目中工作-这个过程在core+中有bug,并且部分VS被Microsoft故意禁用
- 为项目添加数据集类型文件
- 打开它,右键单击表面,添加…表适配器
- 通过向导连接您的访问数据库。当出现一个包含文本的大消息框时,按f1键获取有关控制此行为的信息。阅读并理解全文。它说的是"如果您将db复制到您的项目中,它将在运行时再次复制到调试文件夹中。应用程序将更改bin/debug文件夹中的数据库,并且db将在下次构建过程中用新的副本覆盖。这会让你的数据看起来没有保存;这不是真的">
- 选择返回行
- 输入
SELECT * FROM Employee WHERE id = @id
- 选择FillById/GetDataById的名称
- 完成向导
- 右键单击tableadapter,选择添加查询,添加另一个
SELECT * FROM Employee WHERE Name LIKE @name
或类似的查询-添加查询是一个好主意,让您只选择某些员工,并进行您想要在应用程序中进行的搜索。"按名称搜索"是一个合理的要求。当要求查询的名称时,输入FillByName/GetDataByName - 保存数据集,切换到表单设计器
- 打开数据源窗口(在视图菜单上)。其他Windows),并将表示Employee表的节点拖到窗体 上。
- 出现了几个东西;一个导航栏,带有一个输入id、数据集、数据网格、绑定源等的框。你不需要写一行代码,就能把它们组装在一起。所有的代码都在Form1.Designer.cs和Form1.cs(或者你给你的表单起的任何名字)中,类似于你写的
- 运行应用程序,在框中输入已知的员工id,点击fillbyid。员工出现在网格中。编辑它们的名称,单击导航栏中的保存。打开bin/debug文件夹中的数据库文件,查看更改后的名称 。
- 转到Form1的代码视图,将FillById调用更改为FillByName,并删除TextBox内容的整数转换。现在您可以按名称搜索员工,甚至可以搜索%的名称以列出所有员工,因为这是LIKE操作
看看代码是如何连接的;这一切都很简单。你可以添加更多的表到你的数据集,甚至关系,你可以显示相关的数据通过拖出数据源的子节点(不是顶级节点)
如果您厌倦了构建过程总是覆盖您的调试数据库,请在解决方案资源管理器中单击它,并将复制选项从&;Copy always &;和"Copy if newer"。现在,只有当你对项目文件夹中的db进行模式更改(添加表等)时,它才会被复制