社区
数据库(包含打印,安装,报表)
帖子详情
[问]VB中怎么使用索引加快查询速度(数据库:access)
hwmfly
2005-05-18 02:04:16
我用的access数据库
需要查询的表格很大,有100多万条记录,查找速度很慢。
我在access中建立索引查找速度比没有建立索引快了很多,但是在vb中
还是很慢,不知道vb中怎么使用access中建立的索引,谢谢!
...全文
178
4
打赏
收藏
[问]VB中怎么使用索引加快查询速度(数据库:access)
我用的access数据库 需要查询的表格很大,有100多万条记录,查找速度很慢。 我在access中建立索引查找速度比没有建立索引快了很多,但是在vb中 还是很慢,不知道vb中怎么使用access中建立的索引,谢谢!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
hwmfly
2005-05-18
打赏
举报
回复
问题解决:
查询速度在1秒之内
http://community.csdn.net/Expert/topic/4016/4016436.xml?temp=8.297145E-03
十三、避免LIKE和统配符同时使用
如果要把LIKE运算符同统配符一起使用,为了使用索引,必须把统配符放在后面。
如,下列语句利用了索引。
Like "Smith"
Like "Sm*"
而下列语句根本没有使用索引:
Like "*sen"
Like "*sen*"
viena
2005-05-18
打赏
举报
回复
要高效访问Access,最好用DAO而不是ADO
viena
2005-05-18
打赏
举报
回复
用SQLServer也可以啊,MSDE也比Access强吧
LichKingSZ
2005-05-18
打赏
举报
回复
百万级的数据库用ACCESS不合适呀,请选用别的数据库吧,如果没有D版问题推荐使用oracle。
VB
数据库
编程技术.doc
第9章
VB
数据库
编程技术 9.1
数据库
设计基础 9.1.1
VB
中
的数据访
问
VB
提供的
数据库
引擎叫Jet。
VB
提供了两种与Jet
数据库
引擎接口的方法:Data控件(Dat a Control)和数据访
问
对象(DAO)。Data控件只提供了有限的不需编程就能访
问
现存
数据库
的功能,而DAO模型则是全面控制
数据库
的完整编程接口。这两种方法不是互斥的,实际 上,它们可以同时
使用
。
VB
中
的
数据库
编程就是创建数据访
问
对象,这些数据访
问
对象对应于被访
问
的物理数据 库的不同部分,如Database(
数据库
)、Table(表)、Field(字段)和Index(
索引
)对象。用 这些对象的属性和方法来实现对
数据库
的操作。
VB
通过DAO和Jet引擎可以识别三类数据 库: 1.
VB
数据库
:也称为本地
数据库
,这类
数据库
文件
使用
与Microsoft
Access
相同的格式。Jet引擎直接创建和操作这些
数据库
并且提供了最大程度的灵活性和
速度
。 2. 外部
数据库
:
VB
可以
使用
几种比较流行的"
索引
顺序访
问
文件方法(ISAM)"
数据库
,包括 :dDase III、dBase IV、FoxPro 2.0和2.5以
非
Access
数据库
在
VB
中
的编程及应用
存取对象变量库结构作为一个功能较完备的Windows软件开发平台,Visual Basic专业版提供了对
数据库
应用的强大支持。尤其提供了
使用
数据控件和绑定控制项,
使用
数据库
存取对象变量(Data
Access
Object Variable),直接调用ODBC 2.0 API接口函数等三种访
问
数据库
的方法。对其标准内置的Ms
Access
数据库
,它可以提供不弱于专业
数据库
软件的支持,可以进行完整的
数据库
维护、操作及其事务处理。在
VB
中
,将非
Access
数据库
称为外来
数据库
。对于FoxPro、dBASE、Paradox等外来
数据库
。虽然借助
VB
的Data Manager 能够对这些
数据库
进行NEW、OPEN、DESIGN、DELETE等操作,但在应用程序的运行状态
中
并不能从底层真正实现这些功能。本文从
使用
数据库
存取对象变量的方法出发,实现了非
Access
格式
数据库
(以FoxPro
数据库
为例)的建新库、拷贝
数据库
结构、动态调入等操作,阐述了从编程技巧上弥补
VB
对这些外来
数据库
支持不足的可行性 。 一 、
VB
数据库
的体系结构具体的
VB
的
数据库
结构。
VB
数据库
的核心结构是所谓的MicroSoft JET
数据库
引擎,JET引擎的作用就像是一块"面 板",在其上可以插入多种ISAM(Indexed Sequential
Access
Method,即
索引
顺序存取方 法) 数据驱动程序。JET引擎为
Access
格式
数据库
提供了直接的内部(build-in)支持,这就是
VB
对
Access
数据库
具有丰富支持的真正原因。
VB
专业版
中
提供了FoxPro、dBASE(或 Xbase)、Paradox、Btrieve等
数据库
的ISAM驱动程序,这就使得
VB
能支持这些
数据库
格 式。另外,其他的许多兼容ISAM的驱动程序也可以通过从厂商的售后服务得到。因而从理论上说,
VB
能支持所有兼容ISAM的
数据库
格式(前提是只需获得这些
数据库
的ISAM驱动接口程序)。 由上可见,Ms JET引擎实质上提供了:一个符合ANSI标准的语法分析器;为
查询
结果集的
使用
而提供的内存管理功能;同所支持的
数据库
的外部接口;为应用代码提供的内部接口。实际上,在
VB
中
从一种
数据库
类型转化为另一种
数据库
类型几乎不需要或只需要很少的代码修改。而且,尽管dBASE、Paradox本身的DDL (Data Definition Language,即数据定义语言)和DML(Data Manipulation Language,即数据操纵语言)是非结构化
查询
的,但它们仍然可以
使用
VB
的SQL语句和JET引擎来操纵。 从
VB
的程序代码的角度来看,ODBC,ISAM驱动程序以及Ms
Access
数据库
的整个外部结构够可以统一为一个一致的编程接口。也即是说,提供给
VB
应用程序员的记录集对象视图同所
使用
的
数据库
格式及类型是相互独立的。即对FoxPro等
数据库
仍然可以
使用
众多的
数据库
存取对象变量,这就为非
Access
数据库
的访
问
提供了最重要的方法。 二 、
使用
非
Access
数据库
时的参数设置及配置文件的参数读取如果在
VB
的程序
中
使用
了
数据库
的操作,将应用程序生成EXE文件或打包生成安装程序后,则必须提供一个配置 (.INI)文件,在INI文件
中
可以对不同类型的
数据库
进行设置。如果找不到这个INI文件, 将会导致不能访
问
数据库
。通常情况下,INI文件的文件名和应用程序的名称相同,所以如果没有指明,
VB
的程序会在Windows子目录
中
去找和应用程序同名的INI文件。可以
使用
VB
中
的SetData
Access
Options语句来设置INI文件。 SetData
Access
Options语句的用法如下:SetData
Access
Options 1 ,IniFileName其
中
IniFileName参数指明的是INI文件的带路径的文件名。值得注意的是,当应用程序找不到这个INI文件时,或在调用 OpenDataBase函数时对其Connect参数值没有设定为
VB
规定的标准值,如对FoxPro 2.5格式设定为了" FoxPro;"(应为" FoxPro 2.5; "),或者没有安装相应的ISAM驱动程序,则此时
VB
会显示一条错误信息" Not Found Installable ISAM "。通常,INI文件在应用程序分发出去以前已经生成,或者在安装时动态生成,也可以在应用程序
中
自己生成。 通常这种 INI文件
中
有" [Options]"、"[ISAM]"、" [Installed ISAMs]"、"[FoxPro ISAM]"、"[dBASE ISAM] " 、" [Paradox ISAM] "等设置段,对于一个完整的应用程序则还应有一个属于应用 程序自己的设置段如" [MyDB]”。可在其
中
设置DataType、Server、DataBase、 OpenOnStartup、DisplaySQL、QueryTimeOut等较为重要的
数据库
参数,并以此限定应用程序一般的运行环境。 Windows API接口函数在Kernel.exe动态链接库
中
提供了一个OSWritePrivateProfileString函数,此函数能按Windows下配置文件(.INI)的书写格式写入信息。 在通常情况下,应用程序还需要在运行时读取配置文件内相关项的参数。比如PageTimeOut(页加锁超时时限)、MaxBufferSize(缓冲区大小)、LockRetry(加锁失败时重试次数)等参数,通过对这些参数的读取对应用程序运行环境的设定、潜在错误的捕获等均会有很大的改善。 设此应用程序的配置文件为MyDB.INI,则具体过程如下:Funtion GetINIString$( Byval Fname$ ,Byval szItem$ ,Byval szDeFault$ ) ' 此自定义子函数实现INI 文件内设置段内参数的读取Dim Tmp As String,x As Integer Tmp = String( 2048,32 ) x = OSGetPrivateProfileString(Fname$,szItem$ , szDefault$,Tmp,Len(Tmp) ," MyDB.INI " ) GetINIString = Mid$( Tmp,1,x ) EndFunction以下这些函数的声明可写在模块文件内,且每个函数的声明必须在一行内Declare Function OSGetPrivateProfileString% Lib "Kernel" Alias "GetPrivateProfileString" (ByVal AppName$, ByVal KeyName$, ByVal keydefault$, ByVal ReturnString$, ByVal NumBytes As Integer, ByVal FileName$) Declare Function OSWritePrivateProfileString% Lib "Kernel" Alias "WritePrivateProfileString" (ByVal AppName$, ByVal KeyName$, ByVal keydefault$, ByVal FileName$) Declare Function OSGetWindowsDirectory% Lib "Kernel" Alias "GetWindowsDirectory" (ByVal a$, ByVal b%) Sub Form1_Load( ) Dim st As String Dim x As Integer Dim tmp As String tmp = String$( 255, 32 ) ' INI文件内为各种
数据库
格式指明已安装的相应ISAM驱动程序x = OSWritePrivateProfileString(" Installable ISAMS", "Paradox 3.X", "PDX110.DLL", "MyDB.INI" ) x = OSWritePrivateProfileString( "Installable ISAMS", "dBASE III", "XBS110.DLL", "MyDB.INI" ) x = OSWritePrivateProfileString( "Installable ISAMS", "dBASE IV", "XBS110.DLL", "MyDB.INI" ) x = OSWritePrivateProfileString( "Installable ISAMS", "FoxPro 2.0", "XBS110.DLL", "MyDB.INI" ) x = OSWritePrivateProfileString( "Installable ISAMS", "FoxPro 2.5", "XBS110.DLL", "MyDB.INI" ) x = OSWritePrivateProfileString( "Installable ISAMS", "Btrieve", "BTRV110.DLL", "MyDB.INI" ) x = OSWritePrivateProfileString( "dBase ISAM", "Deleted", "On", "MyDB.INI" ) ' 指明 INI文件的位置x = OSGetWindowsDirectory( tmp, 255 ) st = Mid$( tmp, 1, x ) SetData
Access
Option 1, st + "\mydb.ini" '获得INI文件一些参数 gwMaxGridRows = Val(GetINIString( " MyDB.INI " ,"MaxRows", "250" )) glQueryTimeout = Val(GetINIString( " MyDB.INI " ,"QueryTimeout", "5" )) glLoginTimeout = Val(GetINIString( " MyDB.INI " ,"LoginTimeout", "20" )) End Sub 三 、数据存取对象变量对外来
数据库
编程的方法及其实例在
VB
专业版
数据库
编程的三种方法
中
,第二种-
使用
数据库
存取对象变量(DAO)的方法最具有功能强大、灵活的特点。 它能够在程序
中
存取ODBC 2.0的管理函数;可以控制多种记录集类型:Dynaset,Snapshot 及Table记录集合对象;可以存储过程和
查询
动作;可以存取
数据库
集合对象,例如 TableDefs,Fields,Indexes及QueryDefs;具有真正的事物处理能力。因而,这种方法对
数据库
处理的大多数情况都非常适用。 由于
VB
中
的记录集对象与所
使用
的
数据库
格式及类型是相互独立的,所以在非
Access
数据库
中
也可以
使用
数据库
存取对象变量的方法。因而 对FoxPro等外来
数据库
而言,
使用
数据库
存取对象变量的方法同样也是一种最佳的选择。 有一点需要注意的是,
VB
的标准版
中
仅能
使用
数据控件(Data Control)对
数据库
中
的记录进行访
问
,主要的
数据库
存取对象
中
也仅有Database、Dynaset对象可通过数据控件的属 性提供,其它的重要对象如TableDef、Field、Index、QueryDef、Snapshot、Table等均不能在
VB
的标准版
中
生成,所以
使用
数据存取对象变量的方法只能用
VB
3.0以上的专业版。 (一)、非
Access
数据库
的新建及库结构的修改
VB
专业版
中
的
数据库
存取对象变量可以分为两类,一类用于
数据库
结构的维护和管理,另一类用于数据的存取。其
中
表示
数据库
结构时可以
使用
下面的对象: DataBase、TableDef、Field、Index,以及三个集合 (Collection): TableDefs、Fields和Indexes 。每一个集合都是由若干个对象组成的,这些数据对象的集合可以完全看作是一个数组,并按数组的方法来调用。一旦
数据库
对象建立后,就可以用它对
数据库
的结构进行修改和数据处理。对于非
Access
数据库
,大部分都是对应于一个目 录,所以可以
使用
VB
的MkDir语句先生成一个目录,亦即新建一个
数据库
。而每一个非
Access
数据库
文件可看作是此目录下的一个数据表(Table),但实际上它们是互相独立的。 下面是新建一个FoxPro 2.5格式
数据库
的程序实例。 Sub CreateNew ( ) Dim Db1 As database , Td As TableDefs Dim T1 As New Tabledef , F1 As New Field , F2 As New Field , F3 As New Field Dim Ix1 As New Index Dim Path As String Const DB_TEXT = 10 , DB_INTEGER = 3 ChDir "\" Path$ = InputBox( " 请输入新路径名: ", "输入对话框" ) MkDir Path$ ' 新建一个子目录Set Db1 = OpenDatabase(Path$, True, False, "FoxPro 2.5;") Set Td = Db1.TableDefs T1.Name ="MyDB" '新建一个数据表,数据表名为MyDB F1.Name = "Name" , F1.Type = DB_TEXT , F1.Size = 20 F2.Name = "Class" , F2.Type = DB_TEXT , F2.Size = 20 F3.Name = "Grade" , F3.Type = DB_INTEGER T1.Fields.Append F1 '向数据表
中
添加这些字段T1.Fields.Append F2。
Vb
将图片放入
Access
数据库
更新并保存
Vb
将图片放入
Access
数据库
更新并保存
Vb
将图片放入
Access
数据库
更新并保存,从标题就能看出本程序主要演示如何将图片存入
数据库
,这里图片对格式要求很宽,平时的BMP/JPG/GIF都可以保存,打开程序后,浏览到保存数据的
数据库
,程序会自动
索引
到图片信息,在显示当前图片的时候,选择另一张图片即可实现更新。
VB
调用
数据库
的打印实例
内容
索引
:
VB
源码,报表打印,
数据库
,打印
VB
调用
数据库
的打印实例,浏览到
Access
的MDB文件,可直接调用打印机打樱不支持打印设置,直接就将数据打印出来。
vb
.net
数据库
查找
单表
查询
和多表
查询
的代码,以及精确
查询
和模糊
查询
数据库(包含打印,安装,报表)
1,216
社区成员
55,954
社区内容
发帖
与我相关
我的任务
数据库(包含打印,安装,报表)
VB 数据库(包含打印,安装,报表)
复制链接
扫一扫
分享
社区描述
VB 数据库(包含打印,安装,报表)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章