熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

Visual C#中的數據綁定

2022-06-13   來源: .NET編程 
我們知道在由於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#中數據庫編程


From:http://tw.wingwit.com/Article/program/net/201311/11707.html
    推薦文章
    Copyright © 2005-2022 電腦知識網 Computer Knowledge   All rights reserved.