社区
数据库相关
帖子详情
关于使用ODBC的数据库程序的打包
hnwjx
2000-05-21 12:04:00
还是以前说的,我现在打包时选择了BDE的ODBC,可还是必须在装了DELPHI的机器上才能运行,请各位高手帮帮忙,本人将万分感谢!!
...全文
106
2
打赏
收藏
关于使用ODBC的数据库程序的打包
还是以前说的,我现在打包时选择了BDE的ODBC,可还是必须在装了DELPHI的机器上才能运行,请各位高手帮帮忙,本人将万分感谢!!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
2 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Firing_Sky
2000-05-23
打赏
举报
回复
用打包程序是选择将整个BDE打进安装包
WHQ
2000-05-21
打赏
举报
回复
用IS Prof5.x时选择BDE模板做安装程序;用IS Prof2000时加上BDE Ojbect
qt
数据库
依赖dll,解决无
数据库
驱动的问题,解决
打包
后无法运行的问题
qt高版本没有
数据库
驱动,下载这个解压到对应套件的bin文件上就行了。之后再次重启QT运行
数据库
模块就可以了,但是有个BUG,在QT
打包
之后需要在
打包
后的文件添加这两个dll
mysql
odbc
64位驱动
mysql
odbc
64位5.3.11版本的驱动,安装时需要.Net环境,一起
打包
,方便
使用
。
非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中的SetDataAccessOptions语句来设置INI文件。 SetDataAccessOptions语句的用法如下:SetDataAccessOptions 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 ) SetDataAccessOption 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。
C#
程序
开发范例宝典(第2版).part08
一部久享盛誉的
程序
开发宝典。精选570个典型范例,全面覆盖实用和热点技术,涉及面广,实用性强源于实际项目开发,帮助读者短时间掌握更多实用技术,提高编程水平范例经过精心编排,重点、难点突出,易学易懂书后附录提供快速索引,即查、即学、即用。 第1章 窗体与界面设计 1 1.1 菜单应用实例 2 实例001 带历史信息的菜单 2 实例002 菜单动态合并 3 实例003 像开始菜单一样漂亮的菜单 4 实例004 任务栏托盘菜单 4 实例005 可以拉伸的菜单界面 5 实例006 级联菜单 6 1.2 工具栏设计 6 实例007 带背景的工具栏 7 实例008 浮动工具栏 7
Delphi开发技巧之-
数据库
paradox table添加密码 不
使用
OLE将TDBGrid输出到excel 为不同的SQL服务器改变DateTime格式
使用
ADO找回所有
数据库
表
使用
OLE自动化创建ADODB连接
使用
SQL创建自动增量
使用
SQL快速创建Paradox table
使用
TBlobStream保存文件 创建能自动释放的对象 加速
数据库
搜索 取
ODBC
datasource 名称 取
ODBC
系统数据源 取别名信息 在table中重建所有过时indexes 在不知道密码情况下打开密码保护的paradox
数据库
在内存中制作虚拟表 处理EDBEngineError异常 处理TDBGrid内选定的行 将Table
打包
将TDataSet输出到一个XML文件 将TDateTime转换为Unix时间 将电子制表软件的公式保存到blob字段 彩色TDBGrid 恢复被删除的dBASE记录 改变TDBNavigator图像 检查BDE是否安装 检测ADO的版本 移动TDBGrid的Column 移动一个dbase索引标记 自动登录Paradox表 获取BDE的安装版本 获取table版本 装载所有记录到Stringlist 访问CD或只读驱动器的Paradox tables 运行时创建 DBExpress 链接 选择TDBGrid中所有字段 防止'index not found'异常 防止数据损坏 随机选择一个数据记录
数据库相关
2,496
社区成员
88,445
社区内容
发帖
与我相关
我的任务
数据库相关
Delphi 数据库相关
复制链接
扫一扫
分享
社区描述
Delphi 数据库相关
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章