您的位置:首页 > 职场人生

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

2009-10-24 17:54 477 查看
请看如下代码:

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控件过程如图4-55所示:
[align=center][/align]



[align=center]图4-55 向窗体添加DataGridView控件图[/align]
图4-55描述的是向窗体添加DataGridView控件过程。在工具箱中选择“数据”选项卡,找到DataGridView控件,点击后向窗体拖放,在设计窗口中出现DataGridView控件。默认的DataGridView控件的对象名为dataGridView1,右击dataGridView1控件选择“属性”,在属性窗口可以对对象dataGridView1的属性进行设置。主要是可以对DataSource、DataMember等属性进行配置。也可以在后续代码中进行设置。这样创建出来的对象dataGridView1就可以在后续程序中与数据绑定进行应用。当然,除了利用可视化界面创建DataGridView控件这种方法以外,还可以利用编程的方法。编程这种方法这里不过多叙述。
(3)为DataGridView控件绑定数据
可以与DataGridView控件进行绑定的数据源包括:DataSet;DataView;DataTable;数组;列表。进行数据绑定的方法有三种:
n方法一,直接用DataView对象或DataTable对象为DataGridView控件的DataSource属性进行赋值,见如下代码示例:
[align=left] dbgPassenger.DataSource = objDataSet.Tables["Passenger"].DefaultView;[/align]
n方法二,用DataSet对象为DataGridView控件的DataSource属性进行赋值,用DataSet对象中的DataTable对象为DataGridView控件的DataMember属性赋值,见如下代码示例:

dbgBooks.DataSource = objDataSet; dbgBooks.DataMember = "Titles";
n方法三,调用DataGridView控件的SetDataBinding()方法,将DataSet对象及DataSet对象中的DataTable对象作为第一、第二参数传递给方法完成数据绑定,见如下代码示例:
[align=left] dbgBooks.SetDataBinding(objDataSet, "Titles");[/align]

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

[align=left]u实验步骤(1):[/align]
[align=left]向一窗体拖拽一个DataGridView控件。[/align]
[align=left]u实验步骤(2):[/align]
[align=left]数据库的设计参见图4-56:[/align]
[align=center][/align]



[align=center]图4-56 数据库设计图[/align]
[align=left]数据库为school1,仅用了两个表,mz是表示民族的表,student是表示学生的表。具体字段设计情况请参见图4-56。数据库环境是SQL Server 2005。[/align]
[align=left]u实验步骤(3):[/align]
[align=left]鼠标右击项目,在弹出的菜单中选择“添加”、“新建项”,在弹出的“添加新项”窗体中选择“代码文件”,名称改为“DataBase.cs”,点击“添加”按钮,完成添加。该文件同前所示,此处不再复述。[/align]
[align=left]u实验步骤(4):[/align]
[align=left]双击窗体,在load事件的处理方法里添加如下代码:[/align]

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;
}
}}
[align=left]代码中有两种数据绑定方法可以被应用。其中第一种方法被注释掉了,如果想应用第一种方法,请去掉第一种方法的注释,并把第二种方法进行注释。程序运行后得到的效果如图4-57所示:[/align]
[align=center][/align]



[align=center]图4-57 DataGridView控件绑定数据执行效果图[/align]

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

前面提到,如果修改了DataGridView控件内的数据,或者添加、删除了一条数据记录。与其绑定的DataSet等数据源里相应的数据也会随着一起更新。但如何将这些数据更新发送到数据库以进行保存呢?如图4-58所示:
[align=center][/align]



[align=center]图4-58 DataGridView控件内的数据更新保存示意图[/align]
DataGridView控件内的数据一旦被更新,这个数据的回传和保存过程是通过DataAdapter.Update()方法来实现的。其工作过程原理如图4-59所示:
[align=center][/align]



[align=center]图4-59 DataGridView控件内的数据更新保存工作原理图[/align]
图4-59叙述了被更新的数据又被回传和保存的过程。前面章节曾经提到数据集DataSet里的数据被修改后,回传、保存工作是通过DataAdapter.Update()方法来实现的。这里的应用原理也是一样的。当DataGridView控件内的数据做了任何修改,与其绑定的数据集里的数据也同时被修改。所以也要通过调用DataAdapter.Update()方法来实现DataGridView控件内的被更新数据的回传和保存工作。DataAdapter.Update()方法又是通过相应的执行InsertCommand、UpdateCommand、DeleteCommand这几个命令对象,并通过SqlParameter对象集合传递修改后的行数据给数据库的。
[align=center] [/align]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息