c#

位置:IT落伍者 >> c# >> 浏览文章

Visual C#中的数据绑定


发布日期:2023年07月06日
 
Visual C#中的数据绑定
我们知道在由于Visual C#自身没有类库和其他的Net开发语言一样Visual C#调用的类库是Net框架中的一个共有的类库Net FrameWork SDKADONET是Net FrameWork SDK提供给Net开发语言进行数据库开发的一个系列类库的集合在ADONET中虽然提供了大量的用于数据库连接数据处理的类库但却没有提供类似DbText组件DbList组件DbLable组件DbCombox组件等要想把数据记录以ComBoxListBox等形式显示处理使用数据绑定技术是最为方便最为直接的方法所谓数据绑定技术就是把已经打开的数据集中某个或者某些字段绑定到组件的某些属性上面的一种技术说的具体些就是把已经打开数据的某个或者某些字段绑定到Text组件ListBox组件ComBox等组件上的能够显示数据的属性上面当对组件完成数据绑定后其显示字段的内容将随着数据记录指针的变化而变化这样程序员就可以定制数据显示方式和内容从而为以后的数据处理作好准备所以说数据绑定是Visual C#进行数据库方面编程的基础和最为重要的第一步只有掌握了数据绑定方法才可以十分方便对已经打开的数据集中的记录进行浏览删除插入等具体的数据操作处理

数据绑定根据不同组件可以分为二种一种是简单型的数据绑定另外一种就是复杂型的数据绑定所谓简单型的数据绑定就是绑定后组件显示出来的字段只是单个记录这种绑定一般使用在显示单个值的组件上譬如TextBox组件和Label组件而复杂型的数据绑定就是绑定后的组件显示出来的字段是多个记录这种绑定一般使用在显示多个值的组件上譬如ComBox组件ListBox组件等本文就是来详细介绍如何用Visual C#实现这二种绑定在数据库的选择上为了使内容更加全面采用了当下比较流行的二种数据库一种是本地数据库Acess 另外一种是远程数据库Sql Server

一. 本文程序设计和运行的软件环境

微软公司视窗服务器版

Net FrameWork SDK Beta

MADC (Microsoft Acess Data Component)以上版本

二. 程序中使用的数据库的数据字典

本地数据库Access 的数据库的名称为dbmdb在这个数据库中定义了一张表person这张表的数据结构如下表

字段名称字段类型字段意思id 数字 序号xm 文本姓名xb文本性别nl文本 年龄zip 文本邮政编码

远程数据库Sql Server 的数据库服务器名称为Server数据库名称为Data登陆的ID为sa口令为空在数据库也定义了一张person数据结构如上表

三. 数据绑定一般步骤

(一)无论是简单型的数据绑定还是复杂型的数据绑定要实现绑定的第一步就是就是要连接数据库得到可以操作的DataSet下面二段代码是分别连接Access 和Sql Server 数据库并获得DataSet

连接Access 得到DataSet

//创建一个 OleDbConnection

string strCon = Provider = MicrosoftJetOLEDB ; Data Source = dbmdb ;

OleDbConnection myConn = new OleDbConnection ( strCon ) ;

string strCom = SELECT * FROM person ;

file://创建一个 DataSet

myDataSet = new DataSet ( ) ;

myConnOpen ( ) ;

file://用 OleDbDataAdapter 得到一个数据集

OleDbDataAdapter myCommand = new OleDbDataAdapter ( strCom myConn ) ;

file://把Dataset绑定person数据表

myCommandFill ( myDataSet person ) ;

file://关闭此OleDbConnection

myConnClose ( ) ;

连接Sql Server 得到DataSet

// 设定数据连接字符串此字符串的意思是打开Sql server数据库服务器名称为server数据库为data

string strCon = Provider = SQLOLEDB ; Persist Security Info = False ; User ID = sa ; Initial Catalog = data ; Data Source = server ;

OleDbConnection myConn = new OleDbConnection ( strCon ) ;

myConnOpen ( ) ;

string strCom = SELECT * FROM person ;

file://创建一个 DataSet

myDataSet = new DataSet ( ) ;

file://用 OleDbDataAdapter 得到一个数据集

OleDbDataAdapter myCommand = new OleDbDataAdapter ( strCom myConn ) ;

file://把Dataset绑定person数据表

myCommandFill ( myDataSet person ) ;

file://关闭此OleDbConnection

myConnClose ( ) ;

(二)根据不同组件采用不同的数据绑定

对于简单型的数据绑定数据绑定的方法其实比较简单在得到数据集以后一般是通过把数据集中的某个字段绑定到组件的显示属性上面譬如TextBox组件和Label组件是绑定到Text属性对于复杂型的数据绑定一般是通过设定其某些属性值来实现绑定的这些下面将会具体介绍

三. 数据绑定一般步骤

(一)无论是简单型的数据绑定还是复杂型的数据绑定要实现绑定的第一步就是就是要连接数据库得到可以操作的DataSet下面二段代码是分别连接Access 和Sql Server 数据库并获得DataSet

连接Access 得到DataSet

//创建一个 OleDbConnection

string strCon = Provider = MicrosoftJetOLEDB ; Data Source = dbmdb ;

OleDbConnection myConn = new OleDbConnection ( strCon ) ;

string strCom = SELECT * FROM person ;

file://创建一个 DataSet

myDataSet = new DataSet ( ) ;

myConnOpen ( ) ;

file://用 OleDbDataAdapter 得到一个数据集

OleDbDataAdapter myCommand = new OleDbDataAdapter ( strCom myConn ) ;

file://把Dataset绑定person数据表

myCommandFill ( myDataSet person ) ;

file://关闭此OleDbConnection

myConnClose ( ) ;

连接Sql Server 得到DataSet

// 设定数据连接字符串此字符串的意思是打开Sql server数据库服务器名称为server数据库为data

string strCon = Provider = SQLOLEDB ; Persist Security Info = False ; User ID = sa ; Initial Catalog = data ; Data Source = server ;

OleDbConnection myConn = new OleDbConnection ( strCon ) ;

myConnOpen ( ) ;

string strCom = SELECT * FROM person ;

file://创建一个 DataSet

myDataSet = new DataSet ( ) ;

file://用 OleDbDataAdapter 得到一个数据集

OleDbDataAdapter myCommand = new OleDbDataAdapter ( strCom myConn ) ;

file://把Dataset绑定person数据表

myCommandFill ( myDataSet person ) ;

file://关闭此OleDbConnection

myConnClose ( ) ;

(二)根据不同组件采用不同的数据绑定

对于简单型的数据绑定数据绑定的方法其实比较简单在得到数据集以后一般是通过把数据集中的某个字段绑定到组件的显示属性上面譬如TextBox组件和Label组件是绑定到Text属性对于复杂型的数据绑定一般是通过设定其某些属性值来实现绑定的这些下面将会具体介绍

四.简单型组件的数据绑定

TextBox组件的数据绑定

通过下列语句就可以把数据集(即为myDataSet)的某个字段绑定到TextBox

组件的Text属性上面了

textBoxDataBindingsAdd ( Text myDataSet personxm ) ;

注释此时绑定是Access 数据库中person表的xm字段

由此可以得到绑定TextBox组件的源程序代码(TextBoxcs)下列代码操作的数据库是Access 如下

public class Form : Form

{

private TextBox textBox ;

private Button button ;

private SystemDataDataSet myDataSet ;

private SystemComponentModelContainer components = null ;

public Form ( )

{

file://打开数据链接得到数据集

GetConnect ( ) ;

InitializeComponent ( ) ;

}

file://清除程序中使用过的资源

protected override void Dispose ( bool disposing )

{

if ( disposing )

{

if ( components != null )

{

componentsDispose ( ) ;

}

}

baseDispose ( disposing ) ;

}

private void GetConnect ( )

{

file://创建一个 OleDbConnection

string strCon = Provider = MicrosoftJetOLEDB ; Data Source = dbmdb ;

OleDbConnection myConn = new OleDbConnection ( strCon ) ;

string strCom = SELECT * FROM person ;

file://创建一个 DataSet

myDataSet = new DataSet ( ) ;

myConnOpen ( ) ;

file://用 OleDbDataAdapter 得到一个数据集

OleDbDataAdapter myCommand = new OleDbDataAdapter ( strCom myConn ) ;

file://把Dataset绑定person数据表

myCommandFill ( myDataSet person ) ;

file://关闭此OleDbConnection

myConnClose ( ) ;

}

private void button_Click ( object sender SystemEventArgs e )

{

textBoxDataBindingsAdd ( Text myDataSet personxm ) ;

}

static void Main ( )

{

ApplicationRun ( new Form ( ) ) ;

}

}

对TextBox组件数据绑定的程序界面

得到TextBox组件对本地数据库中的字段进行数据绑定的程序后可以方便的得到对远程数据库中的某些字段进行数据绑定的源程序代码(TextBoxcs)具体如下

public class Form : Form

{

private TextBox textBox ;

private Button button ;

private SystemDataDataSet myDataSet ;

private SystemComponentModelContainer components = null ;

public Form ( )

{

file://打开数据链接得到数据集

GetConnect ( ) ;

InitializeComponent ( ) ;

}

file://清除程序中使用过的资源

protected override void Dispose ( bool disposing )

{

if ( disposing )

{

if ( components != null )

{

componentsDispose ( ) ;

}

}

baseDispose ( disposing ) ;

}

private void GetConnect ( )

{

// 设定数据连接字符串此字符串的意思是打开Sql server数据库服务器名称为server数据库为data

string strCon = Provider = SQLOLEDB ; Persist Security Info = False ; User ID = sa ; Initial Catalog = data ; Data Source = server ;

OleDbConnection myConn = new OleDbConnection ( strCon ) ;

myConnOpen ( ) ;

string strCom = SELECT * FROM person ;

file://创建一个 DataSet

myDataSet = new DataSet ( ) ;

file://用 OleDbDataAdapter 得到一个数据集

OleDbDataAdapter myCommand = new OleDbDataAdapter ( strCom myConn ) ;

file://把Dataset绑定person数据表

myCommandFill ( myDataSet person ) ;

file://关闭此OleDbConnection

myConnClose ( ) ;

}

private void button_Click ( object sender SystemEventArgs e )

{

textBoxDataBindingsAdd ( Text myDataSet personxm ) ;

}

static void Main ( )

{

ApplicationRun ( new Form ( ) ) ;

}

}

五. 复杂型组件的数据绑定

在上面的介绍中了解到对复杂型组件的数据绑定是通过设定组件的某些属性来完成数据绑定的首先来介绍一下ComboBox组件的数据绑定

ComboBox组件的数据绑定

在得到数据集后只有设定好ComboBox组件的的三个属性就可以完成数据绑定了这三个属性是DisplayMemberValueMember其中DataSource是要显示的数据集DisplayMember是ComboBox组件显示的字段ValueMember是实际使用值具体如下

ComboBoxDataSource = myDataSet ;

ComboBoxDisplayMember = personxm ;

ComboBoxValueMember = personxm ;

注释此时绑定是Access 数据库中person表的xm字段由此可以得到ComboBox组件数据绑定的源程序代码(Combocs)本代码操作数据库是Access

public class Form : Form

{

private ComboBox ComboBox ;

private Button button ;

private SystemDataDataSet myDataSet ;

private SystemComponentModelContainer components = null ;

public Form ( )

{

file://打开数据链接得到数据集

GetConnect ( ) ;

InitializeComponent ( ) ;

}

file://清除程序中使用过的资源

protected override void Dispose ( bool disposing )

{

if ( disposing )

{

if ( components != null )

{

componentsDispose ( ) ;

}

}

baseDispose ( disposing ) ;

}

private void GetConnect ( )

{

file://创建一个 OleDbConnection

string strCon = Provider = MicrosoftJetOLEDB ; Data Source = dbmdb ;

OleDbConnection myConn = new OleDbConnection ( strCon ) ;

string strCom = SELECT * FROM person ;

file://创建一个 DataSet

myDataSet = new DataSet ( ) ;

myConnOpen ( ) ;

file://用 OleDbDataAdapter 得到一个数据集

OleDbDataAdapter myCommand = new OleDbDataAdapter ( strCom myConn ) ;

file://把Dataset绑定person数据表

myCommandFill ( myDataSet person ) ;

file://关闭此OleDbConnection

myConnClose ( ) ;

}

private void button_Click ( object sender SystemEventArgs e )

{

ComboBoxDataSource = myDataSet ;

ComboBoxDisplayMember = personxm ;

ComboBoxValueMember = personxm ;

}

static void Main ( )

{

ApplicationRun ( new Form ( ) ) ;

}

}

对ComboBox组件数据绑定的程序界面

得到了ComboBox组件对本地数据库的数据绑定程序也就十分方便的得到ComboBox组件绑定Sql Server 源程序代码(Comboxcs)具体如下

public class Form : Form

{

private ComboBox ComboBox ;

private Button button ;

private SystemDataDataSet myDataSet ;

private SystemComponentModelContainer components = null ;

public Form ( )

{

file://打开数据链接得到数据集

GetConnect ( ) ;

InitializeComponent ( ) ;

}

file://清除程序中使用过的资源

protected override void Dispose ( bool disposing )

{

if ( disposing )

{

if ( components != null )

{

componentsDispose ( ) ;

}

}

baseDispose ( disposing ) ;

}

private void GetConnect ( )

{

// 设定数据连接字符串此字符串的意思是打开Sql server数据库服务器名

称为server数据库为data

string strCon = Provider = SQLOLEDB ; Persist Security Info = False ; User ID = sa ; Initial Catalog = data ; Data Source = server ;

OleDbConnection myConn = new OleDbConnection ( strCon ) ;

myConnOpen ( ) ;

string strCom = SELECT * FROM person ;

file://创建一个 DataSet

myDataSet = new DataSet ( ) ;

file://用 OleDbDataAdapter 得到一个数据集

OleDbDataAdapter myCommand = new OleDbDataAdapter ( strCom myConn ) ;

file://把Dataset绑定person数据表

myCommandFill ( myDataSet person ) ;

file://关闭此OleDbConnection

myConnClose ( ) ;

}

private void button_Click ( object sender SystemEventArgs e )

{

ComboBoxDataSource = myDataSet ;

ComboBoxDisplayMember = personxm ;

ComboBoxValueMember = personxm ;

}

static void Main ( )

{

ApplicationRun ( new Form ( ) ) ;

}

}

ListBox组件的数据绑定

ListBox组件的数据绑定和ComboBox组件的数据绑定的方法大致相同也是通过设定DisplayMemberValueMember其中DataSource这三个属性来完成的并且这三个属性在ListBox组件中代表的意思和ComboBox组件的意思基本一样由此可以得到ListBox组件对本地数据库和远程数据库进行数据绑定的源程序其中ListBoxcs是对本地数据库进行数据绑定ListBoxcs是对远程数据库进行数据绑定具体如下

ListBoxcs源程序代码节选

public class Form : Form

{

private ListBox ListBox ;

private Button button ;

private SystemDataDataSet myDataSet ;

private SystemComponentModelContainer components = null ;

public Form ( )

{

file://打开数据链接得到数据集

GetConnect ( ) ;

InitializeComponent ( ) ;

}

file://清除程序中使用过的资源

protected override void Dispose ( bool disposing )

{

if ( disposing )

{

if ( components != null )

{

componentsDispose ( ) ;

}

}

baseDispose ( disposing ) ;

}

private void GetConnect ( )

{

file://创建一个 OleDbConnection

string strCon = Provider = MicrosoftJetOLEDB ; Data Source = dbmdb ;

OleDbConnection myConn = new OleDbConnection ( strCon ) ;

string strCom = SELECT * FROM person ;

file://创建一个 DataSet

myDataSet = new DataSet ( ) ;

myConnOpen ( ) ;

file://用 OleDbDataAdapter 得到一个数据集

OleDbDataAdapter myCommand = new OleDbDataAdapter ( strCom myConn ) ;

file://把Dataset绑定person数据表

myCommandFill ( myDataSet person ) ;

file://关闭此OleDbConnection

myConnClose ( ) ;

}

private void button_Click ( object sender SystemEventArgs e )

{

ListBoxDataSource = myDataSet ;

ListBoxDisplayMember = personxm ;

ListBoxValueMember = personxm ;

}

static void Main ( )

{

ApplicationRun ( new Form ( ) ) ;

}

}

对ListBox组件数据绑定的程序界面

以下代码是ListBox组件对Sql Server 数据库进行数据绑定的源程序节选(ListBoxcs)

{

private ListBox ListBox ;

private Button button ;

private SystemDataDataSet myDataSet ;

private SystemComponentModelContainer components = null ;

public Form ( )

{

file://打开数据链接得到数据集

GetConnect ( ) ;

InitializeComponent ( ) ;

}

file://清除程序中使用过的资源

protected override void Dispose ( bool disposing )

{

if ( disposing )

{

if ( components != null )

{

componentsDispose ( ) ;

}

}

baseDispose ( disposing ) ;

}

private void GetConnect ( )

{

// 设定数据连接字符串此字符串的意思是打开Sql server数据库服务器名称为server数据库为data

string strCon = Provider = SQLOLEDB ; Persist Security Info = False ; User ID = sa ; Initial Catalog = data ; Data Source = server ;

OleDbConnection myConn = new OleDbConnection ( strCon ) ;

myConnOpen ( ) ;

string strCom = SELECT * FROM person ;

file://创建一个 DataSet

myDataSet = new DataSet ( ) ;

file://用 OleDbDataAdapter 得到一个数据集

OleDbDataAdapter myCommand = new OleDbDataAdapter ( strCom myConn ) ;

file://把Dataset绑定person数据表

myCommandFill ( myDataSet person ) ;

file://关闭此OleDbConnection

myConnClose ( ) ;

}

private void button_Click ( object sender SystemEventArgs e )

{

ListBoxDataSource = myDataSet ;

ListBoxDisplayMember = personxm ;

ListBoxValueMember = personxm ;

}

static void Main ( )

{

ApplicationRun ( new Form ( ) ) ;

}

}

六. 总结

本文介绍的实现数据绑定组件的都是在程序设计中经常用到的WinForm组件

当然在Net FrameWork SDK中提供的WinForm组件是很多的由于本文的限制不可能一一介绍一般来说WinForm组件都可以实现数据绑定虽然在某些具体的方法上有所差异但也总是大同小异在以下的文章中将以此为基础探讨Visual C#中数据库编程

上一篇:浅析.NET架构与模式探索

下一篇:C#给RichTextBox添加查找画面