当代图书馆 ·服务论坛·
第 1期 2010年 3月总第 101期
自编程连接图书馆数据服务器
———基于 SULCM IS Ⅲ系统
林晓群
揭阳职业技术学院图书馆 , 广东揭阳 522000
【摘 要 】本文首先提出了自编程连接图书馆数据服务器的必要性 , 在实际操作的基础上分析了使用 VB编程解决问题
的思路 , 并对如何获取 ODBC接口和 ADO编程获取数据给出了具体的实现
。
【关键词 】数据服务器 编程 连接 VB ODBC ADO 图书馆
【中图分类号 】 G250176
Connecting L ibrary ’s Da ta Server by Self2programm ing : Ba sed on System of SULCM I S Ⅲ
L in X iaoqun
The L ibrary of J ieyang Voca tiona l & Techn ica l College, J ieyang, Guangdong 522000
Abstract: This paper firstly points out the necessity of connecting library ’s data server by self2p rogramm ing. Based on local
imp lementation, it exp lains how to take V isual Basic as p rogramm ing tool. Then it devises the p rogramm ing scheme by getting
ODBC connector and using ADO’s data searching function.
Key W ords: Data Server; Programm ing; Connection; App lication In L ibraries; VB; ODBC; ADO
1 自编程连接图书馆数据服务器的必要性
馆藏数据库作为整个图书馆最重要的自建数据资
源之一 , 存储了图书馆的所有的用户的姓名、借书证
号、单位 , 以及馆藏书目的编目数据等 , 在图书馆的
利用最为频繁。做为图书馆的技术人员 , 经常需要连
接该数据库获取数据 , 如导出用户名密码为其它软件
使用、导出读者借阅情况用于年终统计等等。一般的
做法是使用图书馆管理软件将其数据导出各种格式 ,
但实践中往往存在一些不足。以笔者所在的图书馆为
例 , 采用的系统软件为深圳大学图书馆的 SULCM ISⅢ,
该软件采用的数据库平台为 SYBASE, 进行数据导出
时经常遇到以下问题 :
111 自由性不强 , 耗费时间长
在 SULCM IS Ⅲ中 , 有的导出数据的功能模块无法对
检索条件进行限制 , 只能将整个数据表导出 , 然后再利
用 EXCEL等软件进行二次整理。整表导出必然导致输出
时间过长 , 而且由于占用大量系统资源 , 会导致图书馆
系统瘫痪。笔者所在馆未更换服务器前 , 一旦进行数据
导出 , 流通系统就无法正常工作。
112 有的模块没有导出功能或导出功能较弱
在 SULCM IS Ⅲ中 , 有的模块没有导出功能或导出功能
较弱 , 工作人员想进行个性化导出的话只能联系软件提供
商导出所需数据 , 但往往耗时颇久 , 也浪费双方资源。
113 不方便第三方软件使用 , 不方便动态调用
有些第三方软件提供接口连接其它数据库进行使用 ,
但往往只针对主流的 ACCESS数据库、EXCEL数据库和
SQL 2000数据库。如果可以将所需数据实时导出 , 第三
方软件就可以进行动态调用了。
为了方便使用 , 提高工作人员的工作效率 , 笔者拟
通过对所在馆的数据服务器进行连接 , 导出所需数据到
通用的 SQL2000数据库 , 方便其它软件调用数据或进行
二次开发 , 设计出具有实际使用价值的图书馆周边应用
程序 , 以更好地发挥图书馆的潜在优势。
2 设计思路
首先在 SYBASE数据库中建立一个只有检索功能的
用户名 , 通过 ODBC驱动连接 SYBASE数据库 , 查看数据
库的结构并找出所需的表和列 , 然后通过 ADO操作数据
库检索所需数据 , 最后将数据导入到馆内服务器的
SQL2000数据库中。
·91·
·服务论坛· Contemporary L ibrary
Vol. 101 ,No. 1 ,M arch, 2010
3 相关介绍
311 SYBASE数据库
SYBASE作为一种 C /S架构的大型数据库 , 具有多线
索化的特点。一般的数据库都依靠操作系统来管理与数
据库的连接 , 当有多个用户连接时 , 系统的性能会大幅
度下降 , Sybase数据库不让操作系统来管理进程 , 把与
数据库的连接当作自己的一部分来管理 , 此外 , Sybase
的数据库引擎还代替操作系统来管理一部分硬件资源 ,
如端口、内存、硬盘 , 绕过了操作系统这一环节 , 提高
了性能 [ 1 ]。
312 ODBC
ODBC (Open DataBase Connectivity, 开放数据库互连 )
是微软公司开放服务结构 (WOSA, W indows Open Services
Architecture) 中有关数据库的一个组成部分 , 它建立了一组
规范 , 并提供了一组对数据库访问的
API (应用程序编
程接口 ) , 这些 API利用 SQL来完成其大部分任务 , ODBC
本身也提供了对 SQL语言的支持 , 用户可以直接将 SQL语
句送给 ODBC。一个基于 ODBC的应用程序对数据库的操作
不依赖任何 DBMS, 不直接与 DBMS打交道 , 所有的数据库
操作由对应的 DBMS的 ODBC驱动程序完成 [2 ]。
313 ADO
ADO (ActiveX Data Objects) 称为 ActiveX数据对象 ,
是 M icrosoft公司开发数据库应用程序面向对象的新接口 ,
ADO技术已成为 ASP技术用来访问 W eb数据库应用程序
的核心。ADO是 DAO /RDO的后继产物 , 它扩展了 DAO
和 RDO所使用的对象模型 , 具有更加简单 , 更加灵活的
操作性能。ADO在 Internet方案中使用最少的网络流量 ,
并在前端和数据源之间使用最少的层数 , 提供了轻量、
高性能的数据访问接口 , 可通过 ADO Data控件非编程和
利用 ADO对象编程来访问各种数据库 [ 3 ]。
4 程序开发过程需要解决的问题
411 系统自带的 ODBC无法连接 SYBASE数据库
如何通过 ODBC连接 SYBASE数据库是本过程中最
需要解决的问题 , ODBC虽然能以统一的方式处理所有的
数据库 , 包括 FoxPro、Access、MYSQL还是 O racle数据
库 , 均可用 ODBC AP I进行访问 , 但 SYBASE正好不在其
支持范围之内 , 经过试验 , 安装 SYBASE的 ODBC驱动并
配置后 , SYBASE数据库连接正常。
412 安全性问题
为了避免在编程过程中对中央数据库进行不必要的
修改 , 我们在 SYBASE中建立了一个只有检索权限的用
户 , 利用该用户名对数据库进行访问。
5 实际操作和程序主要模块
511 安装 ODBC的 SYBASE驱动
W INDOW S系统内置的 ODBC无法连接 SYBASE数据
库 , 必须下载 SYBASE的 ODBC驱动安装后才能连接。安
装后必须创建一个相应的数据源名称后才能在 VB中使
用。见图 1。
图 1 通过 ODBC连接 SYBASE的环境设置
512 在 VB中引用 ADO进行数据查询
其使用
为 “
”→“引用 ”→“M icrosoft Ac2
tiveX Data Objects 2. 8 L ibrary”。见图 2。
图 2 VB中引用 ADO
513 实现代码
Public adocon A s ADODB. Connection ’在声明部分引
用 ADO
Public rsado A s ADODB. Recordset
‘连接 SYBASE数据库服务器
D im strConnect A s String
Set adocon = New Connection
adocon. ConnectionTimeout = 3
sr = " 192. 168. 1. 2, 5000" ’数据服务器地
址和端口号
db = " sulcm is" ’数据库名称
·02·
当代图书馆 ·服务论坛·
第 1期 2010年 3月总第 101期
us = " CGI" ’用户名
pd = " 3 3 3 3 3 3 " ’密码
strConnect = " DSN = Sybase; NA = " & sr & " ; DB
= " & db & " ; U ID = " & us & " ; PWD = " & pd
adocon. Open strConnect
‘查看表结构 , 看哪些是我们所需要的字段
Set rsado = New ADODB. Recordset ’定 义 一 个
ADODB的记录集
D im strSQL A s String
rsado. CursorType = adOpenStatic
’显示数据库表中的所有字段
’strSQL = " select 3 from c_ patron"
’Set rsado = adocon. Execute ( strSQL)
’Text1. Text = " "
’’Text1的 MultiL ine必须设置为 True, 才能使用回车符
’’Text1的 ScrollBars必须设置为 2, 才能出现上下滚动条
’For i = 0 To rsado. Fields. Count - 1
’ If Text1. Text = " " Then
’ Text1. Text = rsado. Fields ( i). Name
’ Else
’ Text1. Text = Text1. Text & vbCrLf & rsado.
Fields ( i). Name
’ End If
’Next
’Exit Sub
‘通过 SQL语句检索数据
strSQL = " SELECT cardno, pname FROM c _ patron
WHERE cardno = ’800100000’" ’构建一个 SQL语句检索数据
Set rsado = New ADODB. Recordset ’定义一个 ADODB
的记录集
D im strSQL A s String
rsado. CursorType = adOpenStatic
rsado. Open strSQL, adocon, adOpenStatic, adLockOp2
tim istic
’MsgBox " 共查找到 " & rsado. RecordCount & " 条记录 "
rsado. MoveFirst
Do W hile Not rsado. EOF
Text2. Text = rsado ( " pname" )
rsado. MoveNext
Loop
’连接 SQL
username = " sa"
Password = " lib"
ServerName = " 192. 168. 1. 3"
DatabaseName = " libuser"
Set adoconsql = New Connection
adoconsql. CursorLocation = adU seClient
W ith adoconsql
. ConnectionTimeout = 15
. Provider = " sqloledb"
. Properties ( " Data Source" ). Value = Server2
Name
. Properties ( " Initial Catalog" ). Value = Data2
baseName
. Properties ( " U ser ID" ). Value = username
. Properties ( " Password" ). Value = Password
. Properties ( " Promp t" ) = adPromp tNever
End W ith
adoconsql. Open
见图 3。
图 3 程序检索结果
6 结语
本程序在 W INDOW S XP和 W INDOW S 2000环境下运
行正常 , 在只安装 ODBC的 SYBASE驱动程序的情况下
实现了对图书馆系统的数据访问 , 操作人员在了解数据
库结构以后 , 结合以上代码并对 SQL查询语句进行进一
步修改后 , 可以方便的编写出各种相关程序和接口 , 方
便图书馆工作的开展。
参考文献
1 Sybase数据库简介 2ChinaUnix_ net. [ 2009 - 06 - 09 ].
http: / / www. chinaunix. net/ jh /21 /1069. htm l.
2 蔡 焰. 用 Excel拓展图书馆管理系统功能的研究和
实践 —基于 Sybase数据库系统 [ J ]. 图书馆界 , 2007
(12) : 62 - 64.
3 常用的数据库访问技术. [ 2007 - 05 - 11 ]. http: / /
blog. pfan. cn /gonghuilun /.
作者简介
林晓群 , 男 , 馆员。
收稿日期 : 2009—08—31
·12·