我们知道在由于Visual C#自身没有类库,和其他的.Net开发语言一样,Visual C#调用的类库是.Net框架中的一个共有的类库--.Net FrameWork SDK。ADO.NET是.Net FrameWork SDK提供给.Net开发语言进行数据库开发的一个系列类库的集合。在ADO.NET中虽然提供了大量的用于数据库连接、数据处理的类库,但却没有提供类似DbText组件、DbList组件、DbLable组件、DbCombox组件等。要想把数据记录以ComBox、ListBox等形式显示处理,使用数据绑定技术是最为方便、最为直接的方法。所谓数据绑定技术就是把已经打开的数据集中某个或者某些字段绑定到组件的某些属性上面的一种技术。说的具体些,就是把已经打开数据的某个或者某些字段绑定到Text组件、ListBox组件、ComBox等组件上的能够显示数据的属性上面。当对组件完成数据绑定后,其显示字段的内容将随着数据记录指针的变化而变化。这样程序员就可以定制数据显示方式和内容,从而为以后的数据处理作好准备。所以说数据绑定是Visual C#进行数据库方面编程的基础和最为重要的第一步。只有掌握了数据绑定方法,才可以十分方便对已经打开的数据集中的记录进行浏览、删除、插入等具体的数据操作、处理。
数据绑定根据不同组件可以分为二种,一种是简单型的数据绑定,另外一种就是复杂型的数据绑定。所谓简单型的数据绑定就是绑定后组件显示出来的字段只是单个记录,这种绑定一般使用在显示单个值的组件上,譬如:TextBox组件和Label组件。而复杂型的数据绑定就是绑定后的组件显示出来的字段是多个记录,这种绑定一般使用在显示多个值的组件上,譬如:ComBox组件、ListBox组件等。本文就是来详细介绍如何用Visual C#实现这二种绑定。在数据库的选择上,为了使内容更加全面,采用了当下比较流行的二种数据库,一种是本地数据库Acess 2000,另外一种是远程数据库Sql Server 2000。
一. 本文程序设计和运行的软件环境:
(1).微软公司视窗2000服务器版
(2)..Net FrameWork SDK Beta 2
(3).MADC 2.6(Microsoft Acess Data Component)以上版本
二. 程序中使用的数据库的数据字典:
(1).本地数据库Access 2000的数据库的名称为"db.mdb",在这个数据库中定义了一张表"person"。这张表的数据结构如下表:
字段名称 | 字段类型 | 字段意思 |
id | 数字 | 序号 |
xm | 文本 | 姓名 |
xb | 文本 | 性别 |
nl | 文本 | 年龄 |
zip | 文本 | 邮政编码 |
(2).远程数据库Sql Server 2000的数据库服务器名称为"Server1",数据库名称为"Data1",登陆的ID为"sa",口令为空,在数据库也定义了一张"person"表,数据结构如上表。
三. 数据绑定一般步骤:
(一).无论是简单型的数据绑定,还是复杂型的数据绑定,要实现绑定的第一步就是就是要连接数据库,得到可以操作的DataSet。下面二段代码是分别连接Access 2000和Sql Server 2000数据库,并获得DataSet。
(1). 连接Access 2000,得到DataSet:
//创建一个 OleDbConnection string strCon = " Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source = db.mdb" ; OleDbConnection myConn = new OleDbConnection ( strCon ) ; string strCom = " SELECT * FROM person " ; file://创建一个 DataSet myDataSet = new DataSet ( ) ; myConn.Open ( ) ; file://用 OleDbDataAdapter 得到一个数据集 OleDbDataAdapter myCommand = new OleDbDataAdapter ( strCom , myConn ) ; file://把Dataset绑定person数据表 myCommand.Fill ( myDataSet , "person" ) ; file://关闭此OleDbConnection myConn.Close ( ) ; |
(2). 连接Sql Server 2000,得到DataSet:
// 设定数据连接字符串,此字符串的意思是打开Sql server数据库,服务器名称为server1,数据库为data1 string strCon = "Provider = SQLOLEDB.1 ; Persist Security Info = False ; User ID = sa ; Initial Catalog = data1 ; Data Source = server1 " ; OleDbConnection myConn = new OleDbConnection ( strCon ) ; myConn.Open ( ) ; string strCom = " SELECT * FROM person " ; file://创建一个 DataSet myDataSet = new DataSet ( ) ; file://用 OleDbDataAdapter 得到一个数据集 OleDbDataAdapter myCommand = new OleDbDataAdapter ( strCom , myConn ) ; file://把Dataset绑定person数据表 myCommand.Fill ( myDataSet , " person " ) ; file://关闭此OleDbConnection myConn.Close ( ) ; |
(二).根据不同组件,采用不同的数据绑定:
对于简单型的数据绑定,数据绑定的方法其实比较简单,在得到数据集以后,一般是通过把数据集中的某个字段绑定到组件的显示属性上面,譬如TextBox组件和Label组件,是绑定到"Text"属性。对于复杂型的数据绑定一般是通过设定其某些属性值来实现绑定的。这些下面将会具体介绍。
四.简单型组件的数据绑定:
(1).TextBox组件的数据绑定:
通过下列语句就可以把数据集(即为:myDataSet)的某个字段绑定到TextBox组件的"Text"属性上面了:
textBox1.DataBindings.Add ( "Text" , myDataSet , "person.xm" ) ; |
注释:此时绑定是Access 2000数据库中"person"表的"xm"字段。
由此可以得到绑定TextBox组件的源程序代码(TextBox01.cs),下列代码操作的数据库是Access 2000,如下:
public Form1 ( ) private void GetConnect ( ) } |
得到TextBox组件对本地数据库中的字段进行数据绑定的程序后,可以方便的得到对远程数据库中的某些字段进行数据绑定的源程序代码(TextBox02.cs),具体如下:
public Form1 ( ) private void GetConnect ( ) |
(2).Label组件的数据绑定:
在掌握了TextBox组件数据绑定以后,可以十分方便的得到Label组件的数据绑定方法,因为这二者实现的方法实在是太相似了。下列语句是把得到数据集的"xm"字段绑定到Label组件的"Text"属性上:
label1.DataBindings.Add ( "Text" , myDataSet , "person.xm" ) ; |
注释:此时绑定是Access 2000数据库中"person"表的"xm"字段。由此可以得到Label组件数据绑定的源程序代码(Label01.cs),本代码操作数据库是Access 2000:
public Form1 ( ) private void GetConnect ( ) } |
得到了Label组件对Access 2000数据库数据绑定的程序代码,改换一下程序中数据链接,就可以得到Label组件对Sql Server 2000数据库数据绑定的源程序代码(Label02.cs),具体如下:
public Form1 ( ) private void GetConnect ( ) |
五. 复杂型组件的数据绑定:
在上面的介绍中,了解到对复杂型组件的数据绑定是通过设定组件的某些属性来完成数据绑定的。首先来介绍一下ComboBox组件的数据绑定.
(1).ComboBox组件的数据绑定:
在得到数据集后,只有设定好ComboBox组件的的三个属性就可以完成数据绑定了,这三个属性是:、"DisplayMember"、"ValueMember"。其中"DataSource"是要显示的数据集,"DisplayMember"是ComboBox组件显示的字段,"ValueMember"是实际使用值。具体如下:
ComboBox1.DataSource = myDataSet ;
ComboBox1.DisplayMember = "person.xm" ;
ComboBox1.ValueMember = "person.xm" ;
注释:此时绑定是Access 2000数据库中"person"表的"xm"字段。由此可以得到ComboBox组件数据绑定的源程序代码(Combo01.cs),本代码操作数据库是Access 2000:
public class Form1 : Form
{
private ComboBox ComboBox1 ;
private Button button1 ;
private System.Data.DataSet myDataSet ;
private System.ComponentModel.Container components = null ;
public Form1 ( )
{
file://打开数据链接,得到数据集
GetConnect ( ) ;
InitializeComponent ( ) ;
}
file://清除程序中使用过的资源
protected override void Dispose ( bool disposing )
{
if ( disposing )
{
if ( components != null )
{
components.Dispose ( ) ;
}
}
base.Dispose ( disposing ) ;
}
private void GetConnect ( )
{
file://创建一个 OleDbConnection
string strCon = " Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source = db.mdb" ;
OleDbConnection myConn = new OleDbConnection ( strCon ) ;
string strCom = " SELECT * FROM person " ;
file://创建一个 DataSet
myDataSet = new DataSet ( ) ;
myConn.Open ( ) ;
file://用 OleDbDataAdapter 得到一个数据集
OleDbDataAdapter myCommand = new OleDbDataAdapter ( strCom , myConn ) ;
file://把Dataset绑定person数据表
myCommand.Fill ( myDataSet , "person" ) ;
file://关闭此OleDbConnection
myConn.Close ( ) ;
}
private void button1_Click ( object sender , System.EventArgs e )
{
ComboBox1.DataSource = myDataSet ;
ComboBox1.DisplayMember = "person.xm" ;
ComboBox1.ValueMember = "person.xm" ;
}
static void Main ( )
{
Application.Run ( new Form1 ( ) ) ;
}
}
图03:对ComboBox组件数据绑定的程序界面
得到了ComboBox组件对本地数据库的数据绑定程序,也就十分方便的得到ComboBox组件绑定Sql Server 2000源程序代码(Combox02.cs)具体如下:
public class Form1 : Form
{
private ComboBox ComboBox1 ;
private Button button1 ;
private System.Data.DataSet myDataSet ;
private System.ComponentModel.Container components = null ;
public Form1 ( )
{
file://打开数据链接,得到数据集
GetConnect ( ) ;
InitializeComponent ( ) ;
}
file://清除程序中使用过的资源
protected override void Dispose ( bool disposing )
{
if ( disposing )
{
if ( components != null )
{
components.Dispose ( ) ;
}
}
base.Dispose ( disposing ) ;
}
private void GetConnect ( )
{
// 设定数据连接字符串,此字符串的意思是打开Sql server数据库,服务器名称为server1,数据库为data1
string strCon = "Provider = SQLOLEDB.1 ; Persist Security Info = False ; User ID = sa ; Initial Catalog = data1 ; Data Source = server1 " ;
OleDbConnection myConn = new OleDbConnection ( strCon ) ;
myConn.Open ( ) ;
string strCom = " SELECT * FROM person " ;
file://创建一个 DataSet
myDataSet = new DataSet ( ) ;
file://用 OleDbDataAdapter 得到一个数据集
OleDbDataAdapter myCommand = new OleDbDataAdapter ( strCom , myConn ) ;
file://把Dataset绑定person数据表
myCommand.Fill ( myDataSet , " person " ) ;
file://关闭此OleDbConnection
myConn.Close ( ) ;
}
private void button1_Click ( object sender , System.EventArgs e )
{
ComboBox1.DataSource = myDataSet ;
ComboBox1.DisplayMember = "person.xm" ;
ComboBox1.ValueMember = "person.xm" ;
}
static void Main ( )
{
Application.Run ( new Form1 ( ) ) ;
}
}
ListBox组件的数据绑定和ComboBox组件的数据绑定的方法大致相同,也是通过设定"DisplayMember"、"ValueMember"。其中"DataSource"这三个属性来完成的。并且这三个属性在ListBox组件中代表的意思和ComboBox组件的意思基本一样。由此可以得到ListBox组件对本地数据库和远程数据库进行数据绑定的源程序。其中ListBox01.cs是对本地数据库进行数据绑定,ListBox02.cs是对远程数据库进行数据绑定,具体如下:
ListBox01.cs源程序代码节选:
public class Form1 : Form
{
private ListBox ListBox1 ;
private Button button1 ;
private System.Data.DataSet myDataSet ;
private System.ComponentModel.Container components = null ;
public Form1 ( )
{
file://打开数据链接,得到数据集
GetConnect ( ) ;
InitializeComponent ( ) ;
}
file://清除程序中使用过的资源
protected override void Dispose ( bool disposing )
{
if ( disposing )
{
if ( components != null )
{
components.Dispose ( ) ;
}
}
base.Dispose ( disposing ) ;
}
private void GetConnect ( )
{
file://创建一个 OleDbConnection
string strCon = " Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source = db.mdb" ;
OleDbConnection myConn = new OleDbConnection ( strCon ) ;
string strCom = " SELECT * FROM person " ;
file://创建一个 DataSet
myDataSet = new DataSet ( ) ;
myConn.Open ( ) ;
file://用 OleDbDataAdapter 得到一个数据集
OleDbDataAdapter myCommand = new OleDbDataAdapter ( strCom , myConn ) ;
file://把Dataset绑定person数据表
myCommand.Fill ( myDataSet , "person" ) ;
file://关闭此OleDbConnection
myConn.Close ( ) ;
}
private void button1_Click ( object sender , System.EventArgs e )
{
ListBox1.DataSource = myDataSet ;
ListBox1.DisplayMember = "person.xm" ;
ListBox1.ValueMember = "person.xm" ;
}
static void Main ( )
{
Application.Run ( new Form1 ( ) ) ;
}
}
图04:对ListBox组件数据绑定的程序界面
以下代码是ListBox组件对Sql Server 2000数据库进行数据绑定的源程序节选(ListBox02.cs):
{
private ListBox ListBox1 ;
private Button button1 ;
private System.Data.DataSet myDataSet ;
private System.ComponentModel.Container components = null ;
public Form1 ( )
{
file://打开数据链接,得到数据集
GetConnect ( ) ;
InitializeComponent ( ) ;
}
file://清除程序中使用过的资源
protected override void Dispose ( bool disposing )
{
if ( disposing )
{
if ( components != null )
{
components.Dispose ( ) ;
}
}
base.Dispose ( disposing ) ;
}
private void GetConnect ( )
{
// 设定数据连接字符串,此字符串的意思是打开Sql server数据库,服务器名称为server1,数据库为data1
string strCon = "Provider = SQLOLEDB.1 ; Persist Security Info = False ; User ID = sa ; Initial Catalog = data1 ; Data Source = server1 " ;
OleDbConnection myConn = new OleDbConnection ( strCon ) ;
myConn.Open ( ) ;
string strCom = " SELECT * FROM person " ;
file://创建一个 DataSet
myDataSet = new DataSet ( ) ;
file://用 OleDbDataAdapter 得到一个数据集
OleDbDataAdapter myCommand = new OleDbDataAdapter ( strCom , myConn ) ;
file://把Dataset绑定person数据表
myCommand.Fill ( myDataSet , " person " ) ;
file://关闭此OleDbConnection
myConn.Close ( ) ;
}
private void button1_Click ( object sender , System.EventArgs e )
{
ListBox1.DataSource = myDataSet ;
ListBox1.DisplayMember = "person.xm" ;
ListBox1.ValueMember = "person.xm" ;
}
static void Main ( )
{
Application.Run ( new Form1 ( ) ) ;
}
}
六. 总结:
本文介绍的实现数据绑定组件的都是在程序设计中经常用到的WinForm组件。当然在.Net FrameWork SDK中提供的WinForm组件是很多的,由于本文的限制,不可能一一介绍,一般来说,WinForm组件都可以实现数据绑定,虽然在某些具体的方法上有所差异,但也总是大同小异。在以下的文章中,将以此为基础探讨Visual C#中数据库编程。
相关推荐
通用Winform模板和Winform实例大全是针对C#编程语言中的Windows桌面应用程序开发的重要资源。Winform是.NET Framework的一部分,用于构建图形用户界面(GUI)的应用程序。在本压缩包中,你将找到一系列C#源码,这些...
在C# WinForm应用中,实现FLV视频的播放可能会遇到一些挑战,因为.NET Framework默认并不支持FLV格式的直接播放。不过,通过第三方库或者转换视频格式,我们可以解决这个问题。这里,我们将深入探讨如何在WinForm...
在C# WinForm编程中,你需要掌握变量、数据类型、控制结构(如if语句和for循环)、类和对象等基本概念。 2. **.NET Framework** .NET Framework是C# WinForm的基础,它包含了一组库和服务,支持多种编程语言。它...
这些源码实例可以帮助开发者学习和理解C# WinForm应用的基本结构、控件使用、事件处理、数据绑定以及多线程等核心概念。以下是一些可能涵盖的知识点: 1. **控件使用**:WinForm包含各种控件,如按钮(Button)、...
这个通用的角色权限菜单管理利用了C#的强类型特性和WinForm的图形界面设计,同时采用了三层架构来确保代码的可维护性和扩展性。以下是关于这一主题的详细知识讲解。 首先,我们来看三层架构。三层架构是一种软件...
本主题聚焦于"winform分页控件DevExpress版",这是一个高级且功能丰富的控件,能够帮助开发者在WinForm应用程序中实现高效的数据浏览和分页功能。 DevExpress是一家知名的软件公司,提供了一系列高质量的开发工具,...
FastReport是一款强大的报表工具,广泛应用于C#编程环境中,支持WinForm、WebForm以及MVC三种不同的应用程序架构。它的灵活性和易用性使得开发者能够快速创建复杂的数据报告,提高开发效率,同时也为用户提供友好的...
【标题】"北大青鸟内部教学课件ACCP4.0S2(c#,Winform,项目实战)" 涵盖了C#编程语言、Windows Forms应用开发以及实际项目经验的培养,这些都是IT领域中重要的技能组成部分。下面将详细阐述这些知识点。 【C#编程...
在.NET Framework中,WinForm应用程序是桌面应用开发的重要部分,而`Winform分页控件(C#)`则是用于处理大量数据展示的一种常见解决方案。本文将深入探讨如何在C# WinForm应用中实现一个独立于具体数据源的分页控件,...
- **在WinForm中使用**:通过Visual Studio的工具箱添加图表控件到表单,然后设置其属性,绑定数据源,编写事件处理程序来响应用户交互。 - **在WebForm中使用**:在ASP.NET页面上添加Chart控件,配置属性,通过C#...
7. **数据绑定**:如果你的模板需要展示动态数据,可以利用C#的数据绑定功能,将数据源(如数据库或业务对象)与模板元素关联起来,实现在打印时自动填充内容。 8. **自定义控件**:在某些复杂情况下,可能需要创建...
在Windows Forms(Winform)应用开发中,"异步界面调用"是一个关键的技术概念,它解决了用户界面(UI)线程与后台处理线程之间的交互问题,避免了UI线程因等待耗时操作而被阻塞,从而提高了应用程序的响应性和用户...
在C#中绘制图形,尤其是折线图、饼图和直方图,通常涉及到使用图形库或组件。这里提到的内容是使用OWC11库,这是一个由微软提供的Office Web Components,它允许在Web应用程序中创建和展示图表。下面将详细解释如何...
5. DevExpress.Data.v16.1.dll:数据相关的组件,提供数据绑定和数据操作的支持。 6. DevExpress.XtraEditors.v16.1.dll:包含各种用户界面元素,如对话框、输入控件等。 7. DevExpress.Printing.v16.1.Core.dll:...
通过以上介绍,我们可以看到,基于C#的WinForm验证控件能有效提升数据验证的效率和用户体验,而CustomValidationLibrary作为一个通用类库,更是简化了这一过程,降低了开发难度。在实际开发中,熟练掌握并利用这样的...
7. **数据绑定**:如果项目涉及到数据展示,可能使用了数据绑定技术,将数据库或其他数据源的数据与控件关联,实现动态更新。 8. **异常处理**:良好的错误处理是任何程序的重要部分。在C#中,我们使用try-catch块...
2. **实时更新**:控件应支持实时数据绑定,能够即时显示电压的变化,这对于监控系统尤其重要。 3. **多类型显示**:除了传统的指针式电压表,可能还提供数字显示屏或其他可视化表示,以提供不同的查看方式。 4. **...
`Guifreaks.Common`和`Guifreaks.NavigationBar`可能是两个类库,分别包含了通用的UI组件和导航栏控件的具体实现。Guifreaks通常是一个开发团队或库的名称,他们可能为.NET框架提供了自定义UI控件的扩展。 最后,`...
在C#中,这通常涉及到LINQ查询、SQL语句构造、控件交互以及数据绑定。开发者可能学习到如何根据用户输入的多个条件构建灵活的查询,并显示结果。 2. **C#使用SQLDMO备份还原数据库(进度条).doc** SQLDMO是SQL ...
3. **Winform应用开发**:Winform是.NET Framework中的一个组件,用于创建桌面应用程序。在这个宿舍管理系统中,Winform被用作用户交互界面,允许用户通过图形化窗口进行操作,如添加、修改和查询宿舍信息。 4. **...