手机站
网通分站
电信主站
密 码:
用户名:
当前位置 : 主页>程序设计>VB>列表

非Access数据库在VB中的编程及应用

来源:互联网 作者:west263.com 时间:2008-02-23
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!

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 )
End Function

以 下 这 些 函 数 的 声 明可 写 在 模 块 文 件 内 , 且 每 个 函 数 的 声 明 必 须 在 一 行 内
Declare FunctionOSGetPrivateProfileString% 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$, ByValFileName$) Declare Function OSGetWindowsDirectory% Lib "Kernel" Alias"GetWindowsDirectory" (ByVal a$, ByVal b%) Sub Form1_Load( )

Dim st As String
Dim xAs 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( "InstallableISAMS", "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 = 20F2.Name = "Class" , F2.Type = DB_TEXT , F2.Size = 20 F3.Name = "Grade" ,F3.Type = DB_INTEGER T1.Fields.Append F1 ' 向 数 据 表 中 添 加 这 些 字 段

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!