用DataGridView显示和操作数据库
### 使用DataGridView显示与操作数据库 在.NET框架下开发Windows Forms应用程序时,经常需要用到DataGridView控件来展示和操作数据库中的数据。DataGridView控件提供了强大的数据绑定功能,并且支持各种数据源,如DataTable、BindingSource等。下面我们将通过一个具体的示例来详细介绍如何利用DataGridView控件来显示和操作数据库。 #### 一、DataGridView简介 DataGridView控件是Windows Forms应用程序中最常用的数据展示控件之一,它能够以表格的形式展示数据,并提供编辑、排序、筛选等功能。DataGridView可以通过简单的设置实现复杂的数据交互逻辑。 #### 二、数据库连接与查询 在使用DataGridView之前,我们需要建立与数据库的连接并执行查询语句获取数据。以下是一个典型的数据库连接与查询过程: ```csharp private void Form2_Load(object sender, EventArgs e) { string sql = "SELECT Question, OptionA, OptionB, OptionC, OptionD, Answer, Difficulty FROM Question"; DataSet ds = new DataSet(); SqlDataAdapter sda = new SqlDataAdapter(sql, DBHelper.connection); sda.Fill(ds, "Question"); this.dataGridView1.DataSource = ds.Tables["Question"].DefaultView; } ``` 上述代码实现了以下功能: 1. **定义SQL查询语句**:从数据库表`Question`中选择所有字段。 2. **创建DataSet对象**:用于存储从数据库中获取的数据。 3. **创建SqlDataAdapter对象**:负责将SQL查询结果填充到DataSet中。 4. **执行查询并填充数据**:调用`Fill`方法执行SQL查询并将结果保存到DataSet的表中。 5. **设置DataGridView的数据源**:将DataSet中的表设置为DataGridView的数据源,使DataGridView可以显示数据。 #### 三、更新数据库 当用户在DataGridView中修改了数据后,我们需要将这些更改同步回数据库。可以通过SqlCommandBuilder和SqlDataAdapter对象来完成这个任务: ```csharp private void button2_Click(object sender, EventArgs e) { SqlCommandBuilder scb = new SqlCommandBuilder(sda); sda.Update(ds, "Question"); } ``` 这段代码做了以下几件事: 1. **创建SqlCommandBuilder对象**:用于根据已有的SqlDataAdapter对象自动生成插入、更新和删除命令。 2. **更新数据库**:调用`Update`方法将DataSet中的更改应用到数据库。 #### 四、刷新DataGridView 为了保持DataGridView显示的数据是最新的,我们可以添加一个刷新按钮,点击该按钮即可重新加载数据: ```csharp private void button3_Click(object sender, EventArgs e) { ds.Clear(); // 清空DataSet sda.Fill(ds, "Question"); // 重新填充数据 this.dataGridView1.DataSource = ds.Tables["Question"].DefaultView; // 更新DataGridView的数据源 } ``` 以上代码实现了以下功能: 1. **清空DataSet**:清空DataSet以准备接收新的数据。 2. **重新填充数据**:再次执行SQL查询,获取最新的数据。 3. **更新DataGridView的数据源**:重新设置DataGridView的数据源,使其显示最新的数据。 #### 五、总结 通过以上步骤,我们已经成功地实现了使用DataGridView显示和操作数据库的功能。在这个过程中,我们不仅学习了如何建立数据库连接、执行查询,还掌握了如何更新数据库以及如何刷新DataGridView中的数据。这对于开发具有数据交互功能的应用程序来说是非常重要的。在实际项目中,还可以进一步扩展这些功能,比如增加错误处理机制、支持多表关联查询等。
private void Form2_Load(object sender, EventArgs e)
{
string sql = "select Question,OptionA,OptionB,OptionC,OptionD,Answer,Difficulty from Question"; // 创建SQL语句
DataSet ds = new DataSet(); // 创建数据集(临时仓库)
SqlDataAdapter sda = new SqlDataAdapter(sql,DBHelper.connection); //(sql语句,连接数据库) // 创建数据适配器(货车)
sda.Fill(ds, "Question"); //货车.发动(从仓库,运输"表名") // 调用DataAdapter方法
this.dataGridView1.DataSource = ds.Tables["Question"].DefaultView; //显示 [这个(本身).控件.数据源 = 仓库.表[表名].默认视图]
}
保存修改:
private void button2_Click(object sender, EventArgs e)
{
SqlCommandBuilder scb = new SqlCommandBuilder(sda); //将数据集中 Question 表的数据提交给数据库更新 (生成用于更新的命令)
sda.Update(ds, "Question"); //货车.更新数据(临时仓库中的,表名)
}
刷新:
private void button3_Click(object sender, EventArgs e)
{
ds.Clear(); // 临时仓库.清空
- 粉丝: 0
- 资源: 2
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助