• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
人生之路,职业之路
读书使人充实,交谈使人机敏,写记使人精确;
“动因+兴趣”——决心-持之以恒-见效
博客园    首页    新随笔    联系   管理    订阅  订阅
(转载)一致的数据访问技术 ADO/OLE DB ( 五)
至此我们已经全面介绍了Microsoft 一致数据访问技术, 重点讲述了ADO 对象模型以及它的用法, 最后我们通过一个简单的例子来说明用ADO 访问数据库的基本用法。 ...
 

一 致 的 数 据 访 问 技 术 ADO/OLE DB ( 五)

潘 爱 民

( 接 上 期 )

六、 示 例 程 序

---- 至 此 我 们 已 经 全 面 介 绍 了Microsoft 一 致 数 据 访 问 技 术, 重 点 讲 述 了ADO 对 象 模 型 以 及 它 的 用 法, 最 后 我 们 通 过 一 个 简 单 的 例 子 来 说 明 用ADO 访 问 数 据 库 的 基 本 用 法。

---- 例 程 序 在Visual Basic 环 境 下 完 成, 首 先 创 建 一 个 标 准 的EXE 工 程, 使 用 工 程 的 缺 省 表 单 浏 览 数 据 库。 我 们 把 工 程 名 改 为ADOSample, 把 表 单 名 改 为ADOSampleForm。 程 序 最 终 的 运 行 结 果 如 图1 所 示。


图1 例 程 序 运 行 界 面

---- 为 了 在 工 程 中 使 用ADO, 首 先 我 们 使 用"Project" 菜 单 下 的"References" 命 令, 选 中"Microsoft ActiveX Data Objects Library", 以 后 我 们 在 程 序 中 就 可 以 直 接 使 用ADO 的 对 象 了。

---- 接 下 去 我 们 使 用"Project" 菜 单 下 的"Components" 命 令 选 中"Microsoft FlexGrid Control" 控 制, 然 后 在 表 单 中 加 入FlexGrid 控 制, 我 们 使 用 缺 省 的 控 制 名MSFlexGrid1。

---- 为 了 简 化 程 序, 我 们 使 用 了Visual Studio 6.0 随 带 的Access 数 据 库 文 件Nwind.mdb, 在 程 序 中 加 入 连 接 串 定 义, 所 有 的 全 局 变 量 定 义 如 下:

Dim WithEvents cn As ADODB.Connection
Dim cmd As ADODB.Command
Dim rs As ADODB.Recordset
Dim ConnectString As String
当 程 序 启 动 时, 建 立 连 接 对 象, 代 码 如 下:
Private Sub Form_Load()
Set cn = New ADODB.Connection
On Error GoTo EH
Const ConnectString =
"Provider=Microsoft.Jet.OLEDB.3.51;"
& "Data Source=c:\Program Files\Microsoft
Visual Studio\vb98\Nwind.mdb"
cn.ConnectionTimeout = 5
cn.CursorLocation = adUseClient
cn.Open ConnectString, Options:=adAsyncConnect
Exit Sub
EH:
Select Case Err
Case 40002:
MsgBox "Could not connect..." & Error
Case Else
Debug.Print Err, Error
End Select
End Sub
当 连 接 完 成 后, 我 们 执 行 一 个 基 本 的 查 询 命 令, 并 调 用ConfigFlexGrid 函 数 配 置FlexGrid 控 制 的 显 示 格 式, 调 用ShowDataInFlexGrid 函 数 显 示 结 果 记 录 集, 下 面 是 连 接 对 象 的 事 件 控 制 函 数:
Private Sub Cn_ConnectComplete(ByVal
pError As ADODB.Error, adStatus As
ADODB.EventStatusEnum, ByVal pConnection
As ADODB.Connection)
Set cmd = New ADODB.Command
cmd.CommandText = "Customers"
cmd.CommandType = adCmdTable
cmd.ActiveConnection = cn
Set rs = cmd.Execute
MSFlexGrid1.Visible = False
ConfigFlexGrid
ShowDataInFlexGrid
MSFlexGrid1.Visible = True
End Sub
下 面 是ConfigFlexGrid 和ShowDataInFlexGrid 函 数 的 代 码:
Private Sub ConfigFlexGrid()
MSFlexGrid1.Left = 0
MSFlexGrid1.Top = 0
MSFlexGrid1.Rows = 1
MSFlexGrid1.Cols = 8
MSFlexGrid1.Row = 0
MSFlexGrid1.Col = 1
MSFlexGrid1.ColWidth(0) = 300
MSFlexGrid1.ColWidth(1) = 1500
MSFlexGrid1.ColWidth(2) = 2500
MSFlexGrid1.ColWidth(3) = 1500
MSFlexGrid1.ColWidth(4) = 1500
MSFlexGrid1.ColWidth(5) = 1500
MSFlexGrid1.ColWidth(6) = 1200
MSFlexGrid1.ColWidth(7) = 1200
MSFlexGrid1.TextMatrix(0, 1) = "Customers ID"
MSFlexGrid1.TextMatrix(0, 2) = "Company Name"
MSFlexGrid1.TextMatrix(0, 3) = "Contact Name"
MSFlexGrid1.TextMatrix(0, 4) = "Contact Title"
MSFlexGrid1.TextMatrix(0, 5) = "City"
MSFlexGrid1.TextMatrix(0, 6) = "Country"
MSFlexGrid1.TextMatrix(0, 7) = "Phone"
End Sub
Private Sub ShowDataInFlexGrid()
Dim strTemp As String
On Error Resume Next
MSFlexGrid1.Rows = 1
rs.MoveFirst
Do While Not rs.EOF
strTemp = ""
strTemp = strTemp & vbTab & rs!CustomerID
strTemp = strTemp & vbTab & rs!CompanyName
strTemp = strTemp & vbTab & rs!ContactName
strTemp = strTemp & vbTab & rs!ContactTitle
strTemp = strTemp & vbTab & rs!City
strTemp = strTemp & vbTab & rs!Country
strTemp = strTemp & vbTab & rs!Phone
MSFlexGrid1.AddItem strTemp
rs.MoveNext
Loop
End Sub
为 了 使 窗 口 大 小 调 整 时,FlexGrid 控 制 也 能 够 随 着 变 化, 响 应 表 单 的Resize 事 件, 事 件 控 制 函 数 如 下:
Private Sub Form_Resize()
MSFlexGrid1.Width = Width - 100
MSFlexGrid1.Height = Height - 400
End Sub
当 程 序 退 出 时, 做 基 本 的 清 理 工 作, 代 码 为:
Private Sub Form_Terminate()
Set cn = Nothing
Set cmd = Nothing
Set rs = Nothing
End Sub
现 在 我 们 可 以 运 行 程 序 了, 读 者 可 以 试 一 试。

七、 结 束 语

---- 随 着 信 息 化 时 代 的 不 断 深 入, 信 息 处 理 和 信 息 共 享 变 得 越 来 越 重 要, 数 据 访 问 技 术 对 于 信 息 系 统 也 就 显 得 尤 为 重 要, 本 文 介 绍 了Microsoft 提 供 的 一 致 数 据 访 问(UDA) 技 术, 从 基 本 的 结 构 模 型 到 深 入 介 绍ADO 对 象 模 型, 并 从 应 用 的 角 度 分 析 了ADO 的 一 些 特 性, 最 后 通 过 例 程 序 展 示 了ADO 的 基 本 用 法。

---- 本 文 旨 在 对UDA 技 术 作 一 个 基 本 介 绍, 由 于Internet 技 术 发 展 很 快, 有 些 最 新 的 技 术 在 本 文 中 没 有 涉 及 到, 有 兴 趣 的 读 者 可 以 查 阅 网 上 有 关 资 料。 希 望 文 中 所 讲 述 的 内 容 能 帮 助 读 者 更 好 地 理 解 和 使 用 这 种 技 术。

---- ( 全 文 完)

---- ( 作 者 地 址: 北 京 大 学 计 算 机 科 学 技 术 研 究 所,100871, 收 稿 日 期:1999.02)

---- 责 任 编 辑: 许 菊 芳 xu_jufang@ccw.com.cn

-

posted on 2008-02-15 13:00  FreeBird  阅读(224)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3