VB中用data连接数据库具体方法,给个例子谢谢

VB中用data连接数据库具体方法,给个例子谢谢,第1张

使用Data控件

内在的 Data 控件通过使用 Microsoft 的 Jet 数据库引擎来实现数据访问 –与 Microsoft Access 所用的数据库引擎相同。这一技术使用户可以无缝地访问很多标准的数据库格式,而且使用户无需编写任何代码就可以创建数据识别应用程序。这种内在的 Data 控件最适合较小的(桌面)数据库,诸如 Access 和 ISAM 数据库。

可以使用这种内在的 Data 控件创建应用程序,来显示、编辑和更新来自多种已有的数据库的信息。这些数据库包括 Microsoft Access、Btrieve、dBASE、Microsoft FoxPro�⒁约_ Paradox。也可以使用这种控件如同访问真正的数据库一样来访问 Microsoft Excel、Lotus 1-2-3、以及标准的 ASCII 文本文件。此外,Data 控件也可以访问和 *** 作远程的开放式数据库连接 (ODBC) 数据库,诸如 Microsoft SQL Server 以及 Oracle。

注意 Data 控件和 Remote Data 控件两者都包含在 Visual Basic 中,以提供向后兼容。不过,由于 ActiveX 数据对象 (ADO) 的适应性更广,因此建议使用 ADO Data 控件来创建新的数据库应用程序。详细信息请参阅“使用 ADO Data 控件”。

Data 控件、Remote Data 控件、以及 ADO Data 控件在概念上很相似: 三者都是将一个数据源连接到一个数据绑定控件的“数据控件”。三者也都共享相同的外观—一组共四个按扭,使用户可以直接到达记录集的开始、记录集的末尾、以及在记录集中向前或向后翻卷。

使用 Data 控件创建一个简单的数据库应用程序

要使用 Data 控件创建一个简单的数据库应用程序

在窗体上放置一个 Data 控件。Data 控件是一个内在的控件,因而总是可用的。

单击并选定这个 Data 控件,按 F4 键显示“属性”窗口。

在“属性”窗口中,将“连接”属性设置为想要使用的数据库类型。

在“属性”窗口中,将“DatabaseName”属性设置为想要连接的数据库的文件或目录名称。

在“属性”窗口中,将“记录源”属性设置为想要访问的数据库表的名称。

在该窗体上放置一个文本框控件。

单击并选定这个 TextBox 控件,并在其“属性”窗口中将“数据源”属性设置为该 Data 控件。

在这个“属性”窗口中,将“数据字段”属性设置为在该数据库中想要察看或修改的字段的名称。

对其它的每一个想要访问的字段,重复第 6、7、8 步。

按 F5 键运行这个应用程序。

设置 Data 控件与数据相关的属性

下述与数据相关的属性可以在设计时设置。这个列表给出了设置这些属性的一种逻辑顺序:

注意 数据库技术是一门复杂的科学,下面的这些建议并不意味着要当作规则来使用。

RecordsetType — RecordsetType 属性决定记录集是一个表、一个动态集 (dynaset)、还是一个快照。这个选择将影响哪些记录集属性是可用的。例如,快照类型的记录集与 dynaset 记录集相比具有更多的限制。

DefaultType — DefaultType 属性指定所使用的是 JET 工作空间,还是 ODBCDirect 工作空间。

DefaultCursorType — DefaultCursorType 属性决定光标的位置。可以使用 ODBC 驱动程序来决定光标的位置,或者指定服务器或 ODBC 光标。只有当使用 ODBCDirect 工作空间时,DefaultCursorType 属性才是有效的。

Exclusive — 决定该数据是用于单用户环境,还是多用户环境。

Options — 这个属性决定记录集的特征。例如,在一个多用户环境中,可以设置 Options 属性来禁止他人所做的更改。

BOFAction、EOFAction — 这两个属性决定当这个控件位于光标的开始或末尾时的行为。可能的选择包括停留在开始或末尾、移动到第一个或最后一个记录、或者添加一个新的记录(只有在末尾时)。

在控件箱中的Data控件是VB用于数据库 *** 作的控件,双击Data控件或单击后在体上拖动出控件的大小,都可以看到Data控件的外观

 1.Data控件的常用属性

(1)Connect属性

Connect属性用来指定该数据控件所要链接的数据库格式,默认值为Access,其他还包括dBASE、FoxPro、Excel等。

(2)DatabaseName属性

DatabaseName属性是用于确定数据控件使用的数据库的完整路径。如果链接的Access

数据库,就可单击按钮定位.mdb文件。例如,选择"C:\dbbook.mdb"文件。

(3)RecordSource属性

RecordSource属性用于指定数据控件所链接的记录来源,可以是数据表名,也可以是查询名。在属性窗口中单击下拉箭头在列表中选出数据库中的记录来源。例如,选择客户信息表"Customers"。

(4)RecordsetType属性

RecordsetType属性用于指定数据控件存放记录的类型,包含表类型记录集、动态集类型记录集和快照类型记录集,默认为动态集类型。

¡表类型记录集(Table):包含实际表中所有记录,这种类型可对记录进行添加、删除、

修改、查询等 *** 作,直接更新数据。

¡动态集类型记录集(Dynaset):可以包含来自于一个或多个表中记录的集合,即能从

多个表中组合数据,也可只包含所选择的字段。这种类型可以加快运行的速度,但不能自动更新数据。

¡快照类型记录集(Snapshot):与动态集类型记录集相似,但这种类型的记录集只能读不能更改数据。

(5)BOFAction和EOFAction属性

在运行时用户通过单击数据控件的指针按钮可移动记录到开始或结尾,BOFAction属性是指当用户移动到开始时程序将执行的 *** 作,EOFAction指当用户移动到结尾时程序将执行的 *** 作。

EOFAcfion值为0(MoveFirst)是将第一笔记录作为当前记录,为1(BOF);9记录的开头。

EOFAction值为0(Move

Last)是将最后一笔记录作为当前记录,为1(EOF)指记录的末尾,为2(AddNew)移动到记录结尾并自动添加一记录。

2.Data控件常用的方法

(1)AddNew方法

AddNew用于添加一个新记录,新记录的每个字段如果有默认值将以默认值表示,如果没有则为空白。

例如,给Data1的记录集添加新记录:

Data1.Recordset.AddNew

(2)Delete方法

Delete用于删除当前记录的内容,在删除后应将当前记录移到下一个记录。

(3)Edit方法

Edit用于对可更新的当前记录进行编辑修改。

(4)Find方法群组

Find方法群组是用于查找记录,包含FindFirst、FindLast、FindNext和FindPreviou方法,这4种方法查找的起点不同

Find方法

查找起点

查找方向

FindFirst

第一个记录

向后查找

FindLast

最后一个记录

向前查找

FindNext

当前记录

向后查找

FindRrevious

当前记录

向前查找

例如,查找"客户号"字段为"10002"的记录:

Datal.Recordset.FindFirst″客户号=′10002",

If

Datal.Recordset.NoMatchThen

′如果没找到

 MsgBox″找不到10002号客户″

End

If

通常当查找不到符合条件的记录时,需要显示信息提示用户,因此使用NoMatch属性,当使用Find或Seek方法找不到相符的记录时,NoMatch属性为True。

(5)Move方法群组

Move方法群组是用于移动记录,包含MoveFirst、MoveLast、MoveNext和MovePrevious

方法,这四种方法分别是移到第一笔记录、移到最后一笔记录、移到下一笔记录和移到前一笔记录。

注意:

当在最后一个记录时,如果使用了MoveNext方法时EOF的值会变为True,如果再使

用MoveNext方法就会出错。对于MovePrevious方法如果前移,结果也是同样。

(6)Refresh方法

如果DatabaseName、ReadOnly、Exclusive或Connect属性的设置值发生改变,可以使用Refresh方法打开或重新打开数据库,用Refresh方法可以更新数据控件的集合内容。

(7)Seek方法

Seek方法适用于数据表类型(Table)记录集,通过一个已被设置为索引(Index)的字段,查找符合条件的记录,并使该记录为当前记录。

语法:

记录集.Seek比较式,key1,key2,...,key13

例如,当索引为"客户号"字段时,查找客户号为"10005"的记录:

Data1.Recordset.Seek″:″,″10005″

(8)Update方法

Update方法用于将修改的记录内容保存到数据库中。

(9)UpdateControls方法

UpdateControls方法可以从数据控件的记录集中再取回原先的记录内容,即恢复原先值。当在与数据控件链接的控件中修改了记录内容,可以用UpdateControls方法使这些控件显示恢复原来的值。

3.Data控件常用的事件

(1)Reposition事件

Reposition事件是当某一个记录成为当前记录之后触发。通常利用该事件对当前记录的数据内容进行计算,触发该事件有以下几种原因:

¡单击数据控件的某个按钮,进行记录的移动。

¡使用Move方法群组。

¡使用Find方法群组。

¡其他可改变当前记录的属性或方法。

(2)Validate事件

Validate事件与Reposition事件不同,是当某一记录成为当前记录之前,或是在Update、Delete、Unload或Close *** 作之前触发。

事件的定义如下:

语法:

Private

Sub

Data1_Validate

(action

As

Integer

,save

As

Integer)

其中:

¡action:用来指示引发这种事件的 *** 作。

¡Save:用来指定被链接的数据是否修改了。

例如,在Validate事件触发时确定记录内容是否修改,如果不修改则恢复:

Private

Sub

Data1_Validate(Action

As

Integer

,Save

As

Integer)

 Dim

mag

 if

Save=True

Then

mag=MsgBox(″要保存修改吗?″

,vbYesNo)

If

mag=vbNo

Then

 Save=False

 Data1.UpdateControls

′恢复原先内容

End

if

 EndIf

End

Sub

二、与控件绑定

控件箱中的常用控件PictureBox、Label、TextBox、CheckBox、Image、OLE、ListBox

和ComboBox控件都能和Data的Recordset的一个字段绑定,与Data控件绑定的控件称为数据感知控件。

1.数据感知控件的相关属性

¡DataSource属性:用于在下拉列表中选择想要绑定的控件名称。

¡DataField属性:用于在下拉列表中选择要显示的字段名称。

2.绑定数据控件的步骤

数据感知控件绑定的过程不需要加入任何程序代码,将文本框txtOrderNo与Dara1绑定的步骤如下:

(1)将数据控件(Data1)放置在窗体中,将数据感知控件TextBox放置在窗体中并改名为txtOrderNo。

(2)设置Data1的DatabaseName属性为"C:\dbbook.Mdb"文件,设置Data1的RecordSource属性为"Orders"表。

(3)设置txtOrderNo的DataSource属性为Data1,设置txtOrderNo的DataField属性为"定单号"字段。

[例Ex_Data1_out]创建一个订购图书的客户信息的输入界面,用文本框绑定Data控件,txtOrderNo、txtCuNo和txtDate分别显示"Customers"表的各字段。

界面设计,窗体由4个按钮、3个标签、3个文本框和1个Dara控件组成。

窗体文本框控件和Data控件的属性设置,标签和按钮属性设置省略。

对 象

控件名

属性名

属性值

TextBox

txtCuNo

txtOrderNo

txtDate

Text

DataSource

DataField

Text

DataSource

DataField

Text

DataSource

DataField

Data1

客户号

Data1

定单号

Data1

订购日期

Data

Data1

Caption

DataBaseName

RecondSource

客户信息

C:\dbbook.mdb

Oders

程序代码如下:

Option

Explicit

Private

Sub

cmdAdd_Click()

 ′添加记录

 Data1.Recordset.AddNew

 Data1.Recordset.Update

 Data1.Recordset.MoveLast

End

Sub

Private

Sub

cmdDelete_Click()

 ′删除记录

 Dim

mag

 mag=

MsgBox(″要删除吗?

,vbYesNo,″删除记录″

 If

mag=VbYes

Then

Data1.Recordset.Delere

Data1.Recordset,MoveLast

 End

If

End

Sub

当删除最后一个记录后,如果再删除就会出错,因此每次删除完将当前记录移到最后一个。

Private

Sub

cmdend_Click()

 End

End

Sub

Private

Sub

cmdedit_Click()

 ′修改记录

 Data1.Recordset.Edit

 Data1.Recordset.Update

End

Sub

Private

Sub

Data1_Validate(Action

As

Integer,

Save

As

Integer)

 ′确定是否修改,如不修改恢复原先内容

 Dim

mag

 If

Save

=

True

Then

mag

=

MsgBox("save?",

vbYesNo,

"save

record")

If

mag

=

vbNo

Then

 Save

=

False

 Data1.UpdateControls

End

If

 End

If

End

Sub

如果记录集对象中涉及多个表联合查询的,其记录将不可删除,因为系统无法确定究竟是要删除哪个表的哪条记录(查询结果很可能与表中的原始数据完全失去对应关系)。只有类似下面的查询才能删除:

select * from student

或者直接使用表名进行的查询,如

student


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/11520198.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-16
下一篇2023-05-16

发表评论

登录后才能评论

评论列表(0条)

    保存