分享
 
 
 

探讨VB.Net中的数据绑定技术

王朝c#·作者佚名  2008-05-19
窄屏简体版  字體: |||超大  

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"的数据表,字段属性为下表:

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

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

视窗2000服务器版

Microsoft Data Acess Component 2.6 以上版本 ( MDAC 2.6 )

.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

可以得到如下界面:

图01:对TextBox组件绑定后的程序界面

把Sql Server 7.0上的字段绑定到TextBox的"Text"的属性上:

有了上面的知识,可以非常方便的得出下列代码,和上面的代码的主要区别在于选用的数据库引擎不一样,由此如果你使用的是Oracle等数据库实现这种操作,也只需要改变数据连接就可以了,具体如下(Text2.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 ( )

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

Dim strCon As String = "Provider = SQLOLEDB.1 ; Persist Security Info = False ; User ID = sa ; Initial Catalog = data1 ; Data Source = server1 "

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

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有