转:探讨VB.Net中的数据绑定

作者在 2010-05-12 10:07:40 发布以下内容
探讨VB.Net中的数据绑定 

VB.Net是没有自己的类库的,他依托的类库是.Net FrameWork SDK中的类库,虽然在.Net FrameWrok SDK中并没有提供在Visual Basic中的的DbLabel、DbCombox等如此的数据库组件,但.Net FrameWork SDK中提供了一种数据绑定技术,可以把打开的数据表中的某个或者某些字段绑定到在命名空间System.Window.Forms中定义的WinForm组件(譬如:TextBox组件、ComBox组件、Label组件等)中的某些属性上,从而提供这些组件显示出数据表中的记录信息,也就实现了DbTextBox、DbCombox等组件。本文就是来探讨一下,如何在VB.Net中实现数据绑定。为了更清楚的说明问题,在讨论绑定的时候,在数据库的选择上,不仅选用了本地数据库Access 2000,而且也选用了远程数据库SQL Server 7.0。由于WinFrom组件比较多,但他们实现数据绑定的方法基本是一样的,在本文中,选用了三个比较常用的WinForm组件为代表,即:TextBox组件、ComBox组件和ListBox组件。

一.数据库的数据结构:

Access数据库名称为"Sample.mdb",里面定义了一张"books"的数据表,字段属性为下表:

字段名称 字段类型 代表意思
Bookid 数字 序号
booktitle 文本 书籍名称
bookauthor 文本 书籍作者
bookprice 数字 价格
bookstock 数字 书架号

Sql Server 7.0的数据库服务器名称为"server1",数据库名称为"data1",在此数据库中也有一张"books"表,字段的属性同上。

二.程序设计和运行的环境设置:

  1. 视窗2000服务器版
  2. Microsoft Data Acess Component 2.6 以上版本 ( MDAC 2.6 )
  3. .Net FrameWrok SDK Beta 2版

三.对TextBox组件进行数据绑定:

在整个数据绑定中,对不同的组件可以大致分为二类,一类是简单型数据绑定,另外一种是复杂型数据绑定。简单型的数据针对的对象是TextBox组件、Label组件等,绑定后组件的显示的记录只有一条;而复杂型的针对对象是ListBox组件、TreeView组件等,往往绑定后显示出来的记录是比较多的。对于简单型的数据绑定可以参考本文中TextBox组件的绑定的过程。对于复杂型的绑定过程可以参考本文中的ComBox组件和ListBox组件的绑定过程。

其实无论是和中数据绑定,首先要打开指定的数据表,得到数据集。下面语句是打开Access数据库中的"books"表,得到"myDataSet"数据集:

'打开数据表,返回数据集
public Sub GetConnected ( )
'创建一个 OleDbConnection
Dim strCon As String = " Provider = Microsoft.Jet.OLEDB.4.0; Data Source = ..\sample.mdb"
Dim myConn As OleDbConnection = new OleDbConnection ( )
myConn.ConnectionString = strCon

Dim strCom As string = " SELECT * FROM books "
'创建一个 DataSet
myDataSet = new DataSet( )

myConn.Open ( )
'用 OleDbDataAdapter 得到一个数据集
Dim myCommand As OleDbDataAdapter = new OleDbDataAdapter ( strCom , myConn )
'把Dataset绑定books数据表
myCommand.Fill ( myDataSet , "books" )
'关闭此OleDbConnection
myConn.Close ( )
End Sub

实现数据绑定:
TextBox组件通过下列语句就可以把已经得到的数据集"myDataSet"中的"books.bookid"字段值绑定到TextBox1的"Text"属性上:
TextBox1.DataBindings.Add ( New Binding ( "Text" , Me.myDataSet , "books.bookid" ) ) 了解了这二点,就不难实现对TextBox组件的数据绑定了。下面是实现对TextBox组件数据绑定的源程序代码(Text1.vb):

Imports System.Drawing
Imports System.Windows.Forms
Imports System.ComponentModel
Imports System
Imports System.Data.OleDb
Imports System.Data

Public Class Form1
Inherits Form

Private WithEvents Button1 As Button
Private TextBox1 As TextBox
Private myDataSet As DataSet
Private components As System.ComponentModel.Container

Public Sub New ( )
MyBase.New()
GetConnected ( )
InitializeComponent ( )
End Sub
'清除在程序中使用过的资源
Protected Overloads Overrides Sub Dispose ( ByVal disposing As Boolean )
If disposing Then
If Not ( components Is Nothing ) Then
components.Dispose ( )
End If
End If
MyBase.Dispose ( disposing )
End Sub
'打开数据表,返回数据集
public Sub GetConnected ( )
'创建一个 OleDbConnection
Dim strCon As String = " Provider = Microsoft.Jet.OLEDB.4.0; Data Source = ..\sample.mdb"
Dim myConn As OleDbConnection = new OleDbConnection ( )
myConn.ConnectionString = strCon

Dim strCom As string = " SELECT * FROM books "
'创建一个 DataSet
myDataSet = new DataSet( )

myConn.Open ( )
'用 OleDbDataAdapter 得到一个数据集
Dim myCommand As OleDbDataAdapter = new OleDbDataAdapter ( strCom , myConn )
'把Dataset绑定books数据表
myCommand.Fill ( myDataSet , "books" )
'关闭此OleDbConnection
myConn.Close ( )

End Sub
'初始化窗体中的组件
Private Sub InitializeComponent ( )
Me.Text = "对TextBox组件实现数据绑定!"
Me.Width = 400
Me.Height = 300


Button1 = New Button ( )
TextBox1 = New TextBox ( )

Button1.Left = 200
Button1.Top = 200
Button1.Width = 100
Button1.Height = 40
Button1.TabIndex = 0
Button1.Text = "数据绑定"

TextBox1.Left = 200
TextBox1.Top = 30
TextBox1.Width = 150
TextBox1.Height = 40

Me.Controls.Add ( Button1 )
Me.Controls.Add ( TextBox1 )

End Sub

Private Sub Button1_Click ( ByVal sender As Object , _
ByVal e As System.EventArgs ) Handles Button1.Click
TextBox1.DataBindings.Add ( New Binding ( "Text" , Me.myDataSet , "books.bookid" ) )
End Sub
End Class

Module Module1
Sub Main ( )
Application.Run ( new Form1 ( ) )
End sub
End Module

经过了下列语句编译后:

vbc.exe /r:system.dll /r:system.windows.forms.dll /r:system.drawing.dll /r:system.data.dll
/r:system.xml.dll text1.vb

如果使用的是SQL或者Orcal数据源,仅需要修改Connection等相关对象即可。
lable对象与Text对象的数据绑定方法相同。

    四.对ComBox组件进行数据绑定:

    上面介绍的是对组件的简单数据绑定,对组件的复杂数据绑定和它有所区别,也有所相同,具体如下:

    要对ComBox组件实现数据绑定,首先也是要打开数据表,得到数据集。这和上面TextBox组件的代码大致一样,在此略过。

  1. 实现数据绑定:
    设定了Combox组件的三个属性就可以实现数据绑定了,这三个属性是"DataSource"、"DisplayMember"、"ValueMember"。其中"DataSource"是指定的数据集;"DisplayMember"是ComBox组件显示的字段值;"ValueMember"是ComBox组件选择后的值。具体代码如下:(仅对上面的代码到更改以下几行)
ComboBox1.DataSource = Me.myDataSet
ComboBox1.DisplayMember = "books.booktitle"
ComboBox1.ValueMember = "books.booktitle"

使用对应的ComboBox1.SelectedText属性和ComboBox1.SelectedValue属性获得所绑定的值

五.对ListBox组件进行数据绑定:

  1. 对ListBox组件的数据绑定和ComBox组件的数据绑定大致是相同的,也是对其的三个属性"DataSource"、"DisplayMember"、"ValueMember"进行设定。具体的过程可以参考一下上面ComBox组件的设定过程.


VB.NET技术学习 | 阅读 1683 次
文章评论,共0条
游客请输入验证码
浏览95082次
最新评论