VB查询数据库记录

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

VB查询数据库记录
在VB中进行数据库记录的查询操作,必需根据打开数据库的方式来确定。

以VB3.0为例,
数据集^■象有Table、Dynaset、Snapshot三种,下面四种查询方法分别适用于以上面不同的对象方式打开的数据库。

1 .用SEE◎法查询。

这种方法只使用于以Opentable方式打开的Table类型的数据表,而且在查询之前必须要以查询字段建立索引文件,由于已建立了索引文件,所以查询速度很快,
这种方式的查询结果是将指针移到符合条件的第一个记录。

例如:
settb=db.opentable("de mo")tb.index="nameindex”tb.seek"=","张三"
2 .用FILTERS性查询。

Filter属性是Dynaset和Snapshot对象才具备的,所以也只能适用于
这两者,不能用于TableFilter是用来过滤数据的,只要我们给定过滤条件就可以将所需的记录筛选出来。

需要说明的是,我们需要将以Filter属性筛选出来的数据集打开才能对其操
作。

例如:
setdy1=db.createDynaset("demo")
dy1.filter="姓名like'刘*
setdy2=dy1.createDynaset()
3 .用FIND方法查询。

FIND适用于Dynaset和Snapshot对象,有Findfirst和Findnext两个方法,每次查询到一个记录。

例如:
setdy=db.createDynaset("demo":)
s="工资>160and姓名like'刘*'"
dy.findfirstsdy.findnexts
4 .用SQL查询。

SQL是一种结构化数据查询语言,SQL也只能适用Dynaset和Snapshot数
据集对象,这种方法是根据SQL条件生成一个数据集对象。

例如:
s="select*fromdemowhere姓名like'刘*
setdy=db.createDynaset(s)
R注》:本文中的db为数据库对象,打开方式为:
例如:setdb=OpenDatabase("C:\VB\SAMPLEMDB”)。

谈谈VB的数据库编程方式
成都郑剑敏
VB全称VisualBasic是微软公司推出的基于Basic语言的可视化编程环境,以其简单易学功能
强大而倍受广大电脑爱好者的青睐。

VB的数据库编程方面按其难易程度可分为三类(由易到难);
・使用数据库控制项和绑定控制项
・使用数据库对象变量进行编程
・直接调用ODBC2.0API
在使用VB进行数据库编程时,通常,会首先选择三种基本方法之一来进行数据库应用程序的方案设计,现在就将以上三种设计方法的适应范围及其优缺点进行一个比较。

1使用数据库控制项和绑定控制项
1.1 优点
它是三种方法中编码量最小的
不必了解CDBC2.0API的细节
允许使用标准的和第三方厂商制订的控制项
简化了错误处理
支持所有的动态集方法及属性
1.2 缺点
不能存取快照对象(snapshop)对象或表格对象(都属于记录集对象)
不能存取数据库集合,比如表定义(TableDefs存段(Fieds),索引(Indexes)及查询定义(QueryDefs)只能存取部分ODBC2.0管理函数
不能进行真正的事务处理
有限的错误诊断功能
1.3 应用
对中小规模的数据库表(通常少于一千条记录)只进行简章的浏览操作
基本SQL查询所对应的结果集长度有限(通常结果集的记录数小于一百,这些记录从一个或
两个长度有限的表中检索出来)
应用程序的数据输入/输出项较少(通常只涉及一个或两个长度有限的表、并且表中的字段数
在10个左右且不具有关系完整性限制
2使用数据库对象变量进行编程
优点
可以在程序中存取ODBC2.0的管理函数
可以控制多种记录集类型:Dynaset、Snapshop及Table记录集合对象
可以存取存储过程和查询动作
可以存取数据库集合对象,例如TableDefs、Fields、Indexes及QueryDefs具有真正的事务处理
能力,包括启动事务(Begintrans)、提交事务(CommitTrans)及回滚事务(Rollback)缺点
比使用数据控制项的方法编码量较大
只能进行间接的错误处理和错误恢复
对每个数据库操作没有细粒度的控制
对结果集和包含结果集的内丰资源的操作受到限制
同直接使用ODBC2.0API函数的方法相比性能较低
应用
应用程序需要在执行期间动态地建立表、字段及索引
应用程序涉及同步更新几张表(但在逻辑上保持一致性)的复杂事务
应用程序使用结果集而不是Dynaset的窗体(FORMS)例如Snapshots或Tables这里是设计要
考虑的关键
应用程序的表非常大,多于1000条记录
应用程序具有复杂的数据输入/输出项,它涉及许多内部相关的字段并且包括数据库参照完
整性或一致性规则
应用程序需要执行一些额外的操作和对结果集的查询后处理,尤其是需要很高的数据格式
化显示
应用程序需要利用复杂的ODBC管理功能以选择、配置、校验及建立各种数据源
应用程序需要在执行期间“显示”数据库的基本结构
应用程序需要使用复杂的多码索引方式来检索或更新记录
3直接调用ODBC2.0API
3.1优点
可以直接参与结果集的开发、管理及规范化
对结果集游标提供了更多的控制,并且提供了更多的游标类型和执行动作能够确定ODBC驱动程序及SQL的一致性级别可以更好地控制Windows的执行调度及资源利用其他方面同其他方法差不多,因此这种方法很可能具有最好的性能3.2缺点较其他两种方法需要大量的代码代码复杂并且要求程序员具有编制API调用的经验
在网络上VisualBasic运行期间库的错误处理缺乏安全性,因此代码运行期间出现的错误所造
成的后果会非常严重
3.3应用
如果系统环境为客户机/服务器模式下的大规模多用户环境,那么应用程序必须都能够准确
地解决可能出现的系统错误和失败
应用程序强调资源使用,这里如何对内存、网络服务器资源进行直接控制是首要的考虑因素应用程序使用超大规模数据库例如数据库表可能包含几万或几十万条记录
VB访问数据库方法简介南京河海大学陈鹏VisualBasic(简称VB)是一种可视化的、事件驱动型的Windows应用程序开发工具,它在
GUI设计、绘图、制表、运算、通信和多媒体开发方面都具有简单易行、功能强大等优点,所以越来越受到开发人员的亲睐。

同时,VB在数据库开发方面也具有Foxpro所远不能及的
强大功能。

VB能够读取和访问AccessExcel、DbaseX、Foxpro、Btrieve和ODBC等多种数据库,并能利用VB自身所带的数据库引擎创建Access数据库。

所以VB在管理信息系统(MIS)
的开发和建设方面得到了是益广泛的应用。

现在,笔者就VB应用数据库的一些方法作一简
单的介绍。

VB访问数据库通常有三种途径:第一,通过数据库控制控件DataControl访问;第二,通过
VB提供的数据库对象变量编程访问;第三,通过ODBC接口访问ODBCAPI函数。

在这三种方法中,第一种方法操作起来最方便、灵活、易于掌握,同时也最能体现VisualBasic面向
对象的特色,故这里以Foxpro2.5的数据库为例,介绍数据库控制控件(DataControl)访问数据库的方法与步骤:一、在Form窗口中加入DataControl控件用鼠标在工具窗口的DataControl控件按钮上双击左键,该对象即出现在Form窗口的中间
(控件名为Data1),用鼠标调整好控件的大小及位置。

如工具箱中无此控件,可打开主菜单的
Tools/Custom,在列表中选中MicrosoftDataControl复选框,确认后即可将此控件加入到工具箱中去。

二、设置联接库
用鼠标单击Data1,按下F4,打开属性窗口,设置Connect属性为Foxpro2.5,设置
DatabaseName为c:\foxprow\student.dbf(假设磁盘上已有这个文件)。

三、加入字段显示、编辑控件(数据库捆绑控件)
在Form窗口中加入DGrid控件,如不在此控件,可打开主菜单Tools/Custom,在列表中选
择ApexDataBroundGrid复选框,确认后即可向工具箱中加入此控件。

在Form窗口中单击选中此控件(DGrid1),按下F4打开属性窗口,设置Datasource属性为Data1,在Form窗口中用鼠标右键单击控件DGrid1,选择RetrieveFields;再用鼠标右键单击控件DGrid1,选
择Edit,用鼠标调整控件及有关字段大小;再用鼠标右键单击控件DGridl,选择Properties
(属性),在弹出窗口中,选才C Colums标签,在下拉列表中选Columl,将Caption属性改为“学号”,选才iColum2,Caption属性改为“姓名”,选才iColum3、4将Caption属性改为“性别”、“专业”,按下“确定”按钮。

再向Form窗口中加入一个按钮控件,将Caption属性设置为"退出",双击该控件(Command1),
在代码窗口中写入“END”,存盘。

此时,一个具备数据库读写、浏览功能的应用程序就建立了,按下F5运行,通过单击Data1
的各按钮即可看出当前记录的变化情况。

在此基础上,我们还可以借助数据库控制控件的有关属性和方法进行更灵活的操作和控制。

1、设置Data1.Visiable=False'将控件设为不可见
2、将按钮Command2,3,4,5,6,7的Caption属性分别设置为“追加”、“首记录”、“上一条”、“下一条”、“尾记录”、“删除”,双击各按钮,分别写入事件代码:SubCommand1-Click()'关闭应用程序
End
EndSub
SubCommand2-Click()'追加记录
Data1.Recordset.Addnew
Data1.Recordset.Update
Data1.Recordset.MoveLast
EndSub
SubCommand3-Click()'移向首记录
Data1.Recordset.MoveFirst
EndSub
SubCommand4-Click()'移向上一条记录Data1.Recordset.MovePrevius
IfData1.Recordset.BofThen
Data1.Recordset.MoveFirst
EndIf
EndSub
SubCommand3-Click()'移向尾记录
Data1.Recordset.MoveLast
EndSub
SubCommand4-Click()'移向下一条记录
Data1.Recordset.MoveNext
IfData1.Recordset.EofThen
Data1.Recordset.MoveLast
EndIf
EndSub
除此之外,数据库控制控件还有Bookmark、RecordCount等许多属性与方法,能对数据库进
行各种方便的操作。

由此可见,数据库控制控件具有数据库操作方面的强大功能。

另外,数据库控制控件的RecordSource 属性可用一个SQL语句赋值,以此来有效地调用SQL语句,从而发挥SELECT
语句强大的功能,更使数据库控制控件(DataControl)锦上添花。

真正删除数据库的记录
大家知道,缺省情况下,VB删除记录只是把记录作上个删除标志而已,并没有真正删除。

要真正删除记录,你可以使用VB提供的以下方法:BeginTrans、CommitTrans、RoHBack。

其中,BeginTrans方法开始记录数据库的变动,CommitTrans方法确认数据库的变动,而
RollBack方法则可以恢复被删除或修改的记录。

它们可以嵌套使用。

因此,要恢复被删除的
记录,应该在使用BeginTrans方法之后及使用CommiTrans方法之前使用RollBack方法。

不用DATA控件操作数据库文件
大家知道,在VB中如果使用DATA控件访问数据库,那么程序执行就必须要一些大型DLL 支持。

这对于安装盘的发放是一个大问题。

那么,在VB中能不能不用DATA控件访问数
据库呢?
在VB中不用DATA控件而访问数据库,只有一法:将数据库文件当成2进制文件打开。

但此法最大困难就是你必须了解数据库文件的结构形式。

比如:FoxBase的DBF文件(我不了解其它数据库的文件结构,大家可以去查查):它由记录头和记录构成。

而记录头又由两部分构成:记录头=数据库说明+字段说明。

下面列出FoxBase数据库说明:FoxBase数据库说明起始地址字节数含义
11FoxBase数据库文件标志
2-43最后一次修改日期,3个字节分别为年、月、日
5-84文件记录总数
9-102记录头长度
11-122每个记录长度
13-2220未使用
下面列出字段说明,每个字段由32个字节构成。

字段说明起始地址字节数含义
1-1111字段名称
121字段类型(分别为C、N、D、L等)
13-164该字段在文件中地址
1字段长度
1小数位数
19-3214未使用
知道了字段信息说明,就可以使用复合变量+2进制文件来操作数据库了。

Text转换为AccessMDB
Text文件类型在很多软件中都为一般应用程序与数据库之间架起一座桥梁。

你可以使用TextISAM驱动程序和SQL来把Text文件转换成AccessMDB数据库文件,首先,为文本
文件创建一个SCHEMA.INI文件。

然后,你可以使用下面的代码来实现转换:DimdbAsDatabase,tblasTableDef
Setdb=DBEngine.CreateDatabase(App.Path&"\mymdb.mdb",dbLangGeneral,dbVersion_0) Settbl=db.CreateTableDef("Temp")
tbl.Connect="Text;database=c:\vbpj\data"
tbl.SourceTableName="Customer#txt"
db.TableDefs.Appendtbl
db.Execute"SelectTemp.*intoNewTablefromTemp"
db.Close
Settbl=Nothing
Setdb=Nothing
本文来自:中国自学编程网()详细出处参考
/html/20070419/3524.html。

相关文档
最新文档