C#中通⽤winform组件的数据绑定
我们知道在由于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 , "" ) ;
注释:此时绑定是Access 2000数据库中"person"表的"xm"字段。
由此可以得到绑定TextBox组件的源程序代码(TextBox01.cs),下列代码操作的数据库是Access 2000,如下:
public class Form1 : Form
{
private TextBox textBox1 ;
private Button button1 ;
private System.Data.DataSet myDataSet ;
private System.ComponentModel.Container components = null ;
public Form1 ( )
{
file://打开数据链接,得到数据集
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 )
{
textBox1.DataBindings.Add ( "Text" , myDataSet , "" ) ;
}
static void Main ( )
{
Application.Run ( new Form1 ( ) ) ;
}
acess数据库}
得到TextBox组件对本地数据库中的字段进⾏数据绑定的程序后,可以⽅便的得到对远程数据库中的某些字段进⾏数据绑定的源程序代码(TextBox02.cs),具体如下:
public class Form1 : Form
{
private TextBox textBox1 ;
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 )
{
textBox1.DataBindings.Add ( "Text" , myDataSet , "" ) ;
}
static void Main ( )
{
Application.Run ( new Form1 ( ) ) ;
}
}
(2).Label组件的数据绑定:
在掌握了TextBox组件数据绑定以后,可以⼗分⽅便的得到Label组件的数据绑定⽅法,因为这⼆者实现的⽅法实在是太相似了。下列语句是把得到数据集的"xm"字段绑定到Label组件的"Text"属性上:
label1.DataBindings.Add ( "Text" , myDataSet , "" ) ;
注释:此时绑定是Access 2000数据库中"person"表的"xm"字段。由此可以得到Label组件数据绑定的源程序代码(Label01.cs),本代码操作数据库是Access 2000:
public class Form1 : Form
{
private Label label1 ;
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 ) ;
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论