4-2 ADO.NET-查询和检索数据8

请看如下代码:
private void InitializeDataGridView()
{
            try
            {
                // 建立DataGridView控件
                dataGridView1.Dock = DockStyle.Fill;
                // 自动生成DataGridView
                dataGridView1.AutoGenerateColumns = true;
                // 建立数据源
                bindingSource1.DataSource = GetData("Select * From Products");
                dataGridView1.DataSource = bindingSource1;
                // 自动调整可视化行
dataGridView1.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.DisplayedCellsExceptHeaders;
                // 设置DataGridView控件的边界
                dataGridView1.BorderStyle = BorderStyle.Fixed3D;
                // 当用户使用DataGridView控件时,它会成为可编辑模式
                dataGridView1.EditMode = DataGridViewEditMode.EditOnEnter;
            }
            catch (SqlException e)
            {
MessageBox .Show("To run this sample replace connection.ConnectionString"+ " with a valid connection string to a Northwind"+" database accessible to your system.", "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                System.Threading.Thread.CurrentThread.Abort();
            }
        }
        private static DataTable GetData(string sqlCommand)
        {
            string connectionString = "Integrated Security=SSPI;" + "Persist Security Info=False;" + "Initial Catalog=Northwind;Data Source=localhost";
            SqlConnection northwindConnection = new SqlConnection(connectionString);
            SqlCommand command = new SqlCommand(sqlCommand, northwindConnection);
            SqlDataAdapter adapter = new SqlDataAdapter();
            adapter.SelectCommand = command;
            DataTable table = new DataTable();
            table.Locale = System.Globalization.CultureInfo.InvariantCulture;
            adapter.Fill(table);
            return table;
}
代码中 dataGridView1 . DataSource 被设置为 bindingSource1
2 DataGridView 控件的创建
向窗体添加 DataGridView 控件过程如图455所示:
4-2 ADO.NET-查询和检索数据8_第1张图片
4-55 向窗体添加DataGridView控件图
455描述的是向窗体添加 DataGridView 控件过程。在工具箱中选择“数据”选项卡,找到 DataGridView 控件,点击后向窗体拖放,在设计窗口中出现 DataGridView 控件。默认的 DataGridView 控件的对象名为 dataGridView1 ,右击 dataGridView1 控件选择“属性”,在属性窗口可以对对象 dataGridView1 的属性进行设置。主要是可以对 DataSource DataMember 等属性进行配置。也可以在后续代码中进行设置。这样创建出来的对象 dataGridView1 就可以在后续程序中与数据绑定进行应用。当然,除了利用可视化界面创建 DataGridView 控件这种方法以外,还可以利用编程的方法。编程这种方法这里不过多叙述。
3)为 DataGridView 控件绑定数据
可以与 DataGridView 控件进行绑定的数据源包括: DataSet DataView DataTable ;数组;列表。进行数据绑定的方法有三种:
n 方法一,直接用 DataView 对象或 DataTable 对象为 DataGridView 控件的 DataSource 属性进行赋值,见如下代码示例:
      dbgPassenger.DataSource = objDataSet.Tables["Passenger"].DefaultView;
n 方法二,用 DataSet 对象为 DataGridView 控件的 DataSource 属性进行赋值,用 DataSet 对象 中的 DataTable 对象为 DataGridView 控件的 DataMember 属性赋值,见如下代码示例:
            dbgBooks.DataSource = objDataSet;
            dbgBooks.DataMember = "Titles";
n 方法三,调用 DataGridView 控件的 SetDataBinding ()方法,将 DataSet 对象 DataSet 对象中的 DataTable 对象作为第一、第二参数传递给方法完成数据绑定,见如下代码示例:
            dbgBooks.SetDataBinding(objDataSet, "Titles");

4.案例学习:DataGridView控件绑定数据案例。

u 实验步骤(1):
向一窗体拖拽一个 DataGridView 控件。
u 实验步骤(2):
数据库的设计参见图456
4-56 数据库设计图
数据库为 school1 ,仅用了两个表, mz 是表示民族的表, student 是表示学生的表。具体字段设计情况请参见图456。数据库环境是 SQL Server 2005
u 实验步骤(3):
鼠标右击项目,在弹出的菜单中选择“添加”、“新建项”,在弹出的“添加新项”窗体中选择“代码文件”,名称改为“ DataBase . cs ”,点击“添加”按钮,完成添加。该文件同前所示,此处不再复述。
u 实验步骤(4):
双击窗体,在 load 事件的处理方法里添加如下代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
 
namespace WindowsApplication1
{
    public partial class Form13 : Form
    {
        public Form13()
        {
            InitializeComponent();
        }
        DataBase mydatabase = new DataBase();
        private void Form13_Load(object sender, EventArgs e)
        {
            /* 第一种方式:DataSet
            DataSet ds = mydatabase.GetDataSet("select * from student");
            dataGridView1.DataSource = ds.Tables[0];*/
            // 第二种方式:DataTable
            DataTable dt = mydatabase.GetDataTable("select * from student");
            dataGridView1.DataSource = dt;
        }
    }
}
代码中有两种数据绑定方法可以被应用。其中第一种方法被注释掉了,如果想应用第一种方法,请去掉第一种方法的注释,并把第二种方法进行注释。程序运行后得到的效果如图457所示:
4-57 DataGridView控件绑定数据执行效果图

5.通过DataGridView控件插入、更新和删除记录

前面提到,如果修改了 DataGridView 控件内的数据,或者添加、删除了一条数据记录。与其绑定的 DataSet 等数据源里相应的数据也会随着一起更新。但如何将这些数据更新发送到数据库以进行保存呢?如图458所示:
4-58 DataGridView 控件内的数据更新保存示意图
DataGridView 控件内的数据一旦被更新,这个数据的回传和保存过程是通过 DataAdapter . Update ()方法来实现的。其工作过程原理如图459所示:
4-59 DataGridView 控件内的数据更新保存工作原理图
459叙述了被更新的数据又被回传和保存的过程。前面章节曾经提到数据集 DataSet 里的数据被修改后,回传、保存工作是通过 DataAdapter . Update ()方法来实现的。这里的应用原理也是一样的。当 DataGridView 控件内的数据做了任何修改,与其绑定的数据集里的数据也同时被修改。所以也要通过调用 DataAdapter . Update ()方法来实现 DataGridView 控件内的被更新数据的回传和保存工作。 DataAdapter . Update ()方法又是通过相应的执行 InsertCommand UpdateCommand DeleteCommand 这几个命令对象,并通过 SqlParameter 对象集合传递修改后的行数据给数据库的。
 

本文出自 “熊猫写程序” 博客,转载请与作者联系!

你可能感兴趣的:(职场,查询,休闲,ADO.NET,检索数据)