2024年3月29日发(作者:)
维普资讯
蚌如舍-舳越肛 软件技术
2002年4月10日第4期
圈
◆ 中国人民银行河南省商丘中心支行科技科倪显利
f摘要】Visual FoxPro x.0是广太用户非常喜爱鹄敷据库 母,书囊馥 酾舟绍一辑_sQL
函数出发.说明VisUal F0xPro6 0两非DSN连接者jj;r薄羁寝藏糍蠢型数拇蓐遵接孵蠢l法,霉
后遣过实例期述了连接、撼佧的县体过程。 0 一一一0 -。 ÷
f黄键蔼]VisUal 蛐如6、0 数据库sQL 嘲 避接 j i =。 :。
Fox系列数据库产品作为一种开发信息管理系
统的微机常用工具.深受开发人员以及广大用户的
喜爱,但由于微电子技术的飞速发展.CPU处理速
度的快速提升,硬盘的容量、速度及其它性能的显
著提高.使得原来运行于小、中型机等高档次计算
机上的SQL Server、Oracle、Sybase等大型数据库得
以在微机上推广应用,较为流行的Fox系列微机数
据库却黯然失色.但随着Visual FoxPro 3,0以及
5 0、6、0版本的推出.引人了许多新的特性:融人
1.开发应用系统快捷、方便,可以减轻开发人
员的劳动强度,节省大量的开发时间:面向对象特
性.如对象、类及其继承性、封闭性、多态性属性等,
作为XBASE语言的扩展集而实现.提供了对面向
对象程序设计的全面支持,使开发者更多把精力放
在系统前期分析和程序设计而不是编码上。遵循所
见即所得的原则,提供了向导、代码范围分析器、项
目管理器、设计器和生成器等图形化风格的交互开
发工具,使设计工作在富有情趣的环境中进行 多
姿多彩的工具栏,给用户带来诸多的便利。
2.方便实现数据共享、转换:Visual FoxPro与
其它Windows应用程序紧密结合,支持所有Win
可视化编程.面向对象程序设计以及ODBC技术,
它们的发布绐Fox系列数据库带来新的生机。
一
、
Visual FoxPro 6,0作为客户端开发工具
的技术特点
dows的数据共享机制,包括动态连接库(DLL,By.
namic Link Library)、动态数据交换(DDE.Dynamic
Data Exchange)及对象连接和嵌人(OLE.0 ect
Visual FoxPro 6.0提供了支持客户机/服务器
所需要的各种特征.包括SQL传递技术、事务处理、
远程视图、数据字典、NULL类型、数据库升迁及对
ODBC资源的仪程;通过ODBC,可以访问几 任何
类型的数据库,如Oracle、SQL Server、Sybase等主流
LinkinE and Embedding)等,可与Microsoft其它应用
软件如Word、Excel等,共享数据资源.快速转换成
各种格式文档资料;可以利用OLE自动化命令调
用其它软件中的数据。
3丰富多媒体数据处理功能:Visual FoxPro
数据库,不失为客户机/服务器结构应用系统的客
户端优秀开发工具。它具有如下特点:
APR.10.2002 N0、4
维普资讯
墨 鬻 砰扔舍骷董
6.0不但能进行文本格式文件、数据库文件的处
的连接、处理与提交处理:
理,还提供对GIF(Graphics Interchange Format)和
,u0㈣【 … Ⅱ
JPEG(Joint Photographic Electronic Group)图形文件
_m¨rdl‰n0~r 一】】
轴uWuN6∞NN叮(Jd 、 jn & *●ti ^¥
的支持,它提供了一个多媒体控制接口。通过多媒
●
sOlDI 叮( m 1 #■
如 ( Eh k cs %) & j ■
体控制接口(MCI.Muhimedia C0ntorl Intena(rfa ),无 _e
t●&
 ̄LscrPRce, &L ■ ■ ● ■
须介入实际设备的复杂编程就可以操纵所有的多
J出 ・啪”
so】P唧^肛(_c…∞“ d L【 } 【Ⅱ£c(J
媒体设备,例如.对MMContorl控件的简单编程就
・“I 】J so1.
s £x叱( mHI fI, £ Ⅲ #帅L语日 ■
I ll】 。
可以实现视频文件、音频文件的播放等操作。
s0lc^NcE“_L叽H m 】 * ■ f L 日
s0u EB LB一 【Il圳k) ^ 十# .#月一十
4.方便的应用编程接口(API,Application Pro—
£■ *
s。 m删噼C-C…∞HI札nHM— *量自■ } ^
gramming Interface)调用:Visual FoxPro 6 0提供了
J 1傩P的 】 Knv ̄]I c∞ -雎I) v h * 。
s。 s( 一 J. n #ti● ^
应用编程接口(API),把其与Visual Studio套件中
WI[ 】I v h *
s0 ∞n {n №m 、
的其它开发工具融为一体,紧密结台,可以满足较
㈣u mcbirde】 *●* j 十
*± j
复杂的应用系统编程需求。
5.开发应用系统体积小、运行速度快:Visual
下表(见下页)所列为连接属性及连接属性参
FoxPro大量应用动态连接库机制,DLL一次调入内 数值。
存可被多个程序、线程调用.大大减小了内存占用
三、连接字符串(Connection String)的使用
空间.缩小所编译程序的长度。
在SQLSTRINGCONNECT([ccoIlr|ects “g1)函
二、数据库连接厦操作函数
数中变量cCoxmectString与ADO控件对象的Con-
Visual FoxPrp 6 0数据库与其它数据库的连接
nectionString属性具有~致的内容.为可读写String
有两种方法:一种使用控件连接;另一种使用函数
类型,提供数据提供者或服务提供者打开到数据源
连接。
连接所需要的特定信息。就Microsoft OLE DB
1用控件连接数据库方法。在表单中加入A—
Provider for ODBC提供者来讲,包括Provider、driv—
DO控件,具体实现过程如下:
er、Sener、database、DSN、UID、PWD等。
(1)建表单Visual F0xPm一“新建”一“表单”一
1.Provider:字符串表达式,指定OLE DB数据
“新建文件”;
或服务提供者的名称。
(2)选择控件“工具”一“选择”一“控件”一选中
三种提供者:数据提供者 服务提供者和服务
“控件”一选择“MicrosoftADODataContorl,Vet・
组件.分为两类,提供数据的提供者和提供服务的
sion6.0(OLEDB)”控件一“确定”;
提供者。数据提供者拥有其自己的数据并将数据以
(3)添加控件“查看类”一选择“AetiveX控件”
表的格式显露给应用程序。服务提供者通过产生和
一在显示控件中选择“MicrosoftADODataContorl,
消费数据将服务封装,使ADO应用程序中的功能
versi0Ⅱ6.0(OLEDB)”控件一在表单中加入“ADO” 得以扩大。服务提供者也可以进一步定义为服务组
控件;
件,服务组件必须连同其它服务提供者或组件一起
(4)设置ADO对象属性,如ConnectionString
工作。
UserName、PassWord、CommandType、RecordSource
(1)数据提供者:
等。
由于每个提供者都是唯一的,所以应用程序与
2 用函数连接数据库方法。这是本文重点介
ADO交互作用的方式在不同的提供者之间略有差
绍的方法。下表所列一组函数可以全面完成数据库
别,应用时需要注意它们之间的差别。
APR.10.2002 N0.4
曩
维普资讯
平 舍.融电.肛 软件技术
2002年4月10日第4期
名称的选择可以通过以下途径:
对于 indo'a-sgx和WindowsNT:
嚣
《值
F自 lN0雎
1自soL
m j 十 、
“开始”一“设置”一“控制面板”一“数据源
(ODBC)”一“ODBC数据源管理器”一“驱动程序”
中;
对于Windows2000:
一 《目 自
“开始”一“设置”一“控制面板”一“管理工具”
t 目
0
2 # 目目,
H . # .#目 、 目
一“数据源{ODBC)”一“ODBC数据源管理器”一
“ 0Ⅷ
“驱动程序”中。
∞ # m *
可以看 Driver da Microsoft para arquivos texto
, I ∞
E }
n∞ⅦuⅡ( }F0盱川l II】 l
cost *H .
HI
( .txt; c日v)等20多个驱动程序名称,从其中选
择自己所需要的驱动程序名称。
OI3 ̄C 2 珊阿0Ⅻ ’ }m)
*写
3
计话 .
【阿蛐
目
* f.
_l一,H4-
±
眦慢
3.SERVER(SRVR):字符串表达式,一些资料
介绍为服务器名称,经笔者实践认为确切地应为数
( f H加P啪
据库服务名称,由于像SQL Server、Sybase等数据库
在安装时自动把服务器名称缺省设置为数据库服
目
0t
目 d # ,
务名称,但如果只在“我的电脑”一“属性”一“网络
一 一
自
一
标识”一“属性”中更改计算机名,而不改变数据库
服务名称,使之不相同,在程序中应以数据库服务
名称为准。
H
’t
日 目
(nL 一 月 目 0呻c
自H , 《 &
4.DATABASE(DB):字符串表达式,指定要与
其建立连接的数据库名称 需要特别指出的是,即
日一 目目 慰
0 #
0—680
目 r# .
埔
使DSN定义已经指定了数据库.也可以在DSN之
外指定DATABASE参数以便连接到不同的数据
库 这同时更改了DSN定义以包括指定的数据库。
目
】 D日-研^ 【肿(
女
呻Ⅺ彻H:自
使用DSN时始终包括DATABASE参数是一种好办
唯砸‘r日
帅
FOX ̄RO HI }Ⅱ at
^】 j 5 m 且^c I
2
法。这样将保证能连接到正确的数据库,因为其他
用户可能会在上一次检查DSN定义后更改默认的
E
数据库参数。
& 啦☆々n ' d∞W目・ #J
一
5.DSN(Data Source):字符串表达式,在此为
【2)服务提供者
要使用服务提供者.必须提供关键字。同时,也
应当知道与每个服务提供者相关联的、特定提供者
的动态属性。
空,无须指定连接的ODBC数据源的名称
6 UID(Lseridj:字符串表达式,为ODBC数据
源指定用户标识(用户帐号名),指定用户必须有足
够的权限。
2 DRIVER:字符串表达式,表示ODBC驱动程
序的名称。它并不是ODBC驱动程序动态连接库
(DLL)文件名 对于其中的定义必须用(】括起来,
7.PWD(Passwordj:字符串表达式,为ODBC数
据源指定用户口令,必须有足够的权限。
四、非DSN连接字符串的组成
APR 10.2002 N0.4
维普资讯
囵 软件技术 2002年4月10日第4期
除了ADO所定义的参数外.提供者不支持任
【 ov =MSDASQL;I
簪妨 l触童肛
Driver=(DrlverNme1:
H
DB【
IPAdam;
e=d a i
何特定连接参数。但是,提供者将把任何非ADO连
接参数传递给ODBC驱动程序管理器。
由于可以省略Provider参数.因此使用与撰写
ODBC连接字符申时用的相同参数名(DRIVER=、
DATABASE=、DSN:等等)、值和语法,可以撰写与
同一数据源的ODBC连接字符申相同的ADO连接
字符串。
1对于SQLSe ̄er数据库:
【Pn】d—MSDASQLI 1
D VER=(Driver N觚 }:
SERVER=…
DAT ̄BISE=database;
UII)=…
UID…
PWD passward;
FetehBufferStze=iateger,
NoLo#nBox=Y .
Opfi…
Pr0t
:
= P,IP;
Re,MOnly=No;
…:
Se ̄erType=Infn咄 IVe ̄ion
例如:
ennd c…
+ D …
+ H
… Pro ̄dder=MSDASQ ̄
一
【oDen“nkGe一
11 66 17.1 51i
一
+ Databoae pub*;
+ UID…:
PWD=password ̄
+ PwD=“d『;
+ EeWhB ̄erSlze=30;
+ N。【 nB0x:Yes;
例如:
cnnR c
+
+ …
l∞sIri =T der=MSDASQL ̄
1s。L ServerI;
∞ m_
…
+ 0pfi ̄s=:
+ P ol=TCP/I
+ databoae=pubs;
一
+
0Tlh=No;
=.
一
+ uid…
+ Se H{)m…
+ pwd vY_lul”
十 Se 盯Tv =【n 咖 2
2对于Syb.ar,e数据库:
【PROVIDER=MSDASQL ̄1
D VER=(Driver N觚 };
注:【1中的内窖可 省略。
五、应用实例
sRvR…er=注:必须是SRVR,而不能是SERVER。
服务器安装windows 2000 Server操作系统.以
Syhase 11.9.2数据库作为服务器端数据库管理数
据;客户端安装Windows98、Sybase客户端程序
Open Client,以Visual FoxPro 6.0数据库作为客户
端开发工具。扬长避短,相得益彰,充分发挥Sybase
数据库安全性、可靠性高.管理数据量大,Visual
FoxPro 6.0数据库开发人员熟悉、开发速度快、程
序体积小、运行速度快、占用资源少的特点。
DB=d b .注:可以是DB,也可 DATABASE。
DSN=,洼:谤项可以省略
UID=us盯
PWD pasawcd
例虹
enr&c删rL 。口stn g= =MSDASQL; 一
+ DRIVER=【卸bB s em11I;
+ SRVR…
+ DSN=:
+ DB=dat ̄;
+ m
一
;
+"PWD=d e
3对于0叫le数据库:
【PROVIDER=MSDASQL;】
DRIVER=1D T Na蚰eI.
SERVER=…
datab ̄
=dale;
以Syba9e11.9.2为例,编制一个实用的学籍管
理程序,以期达到抛砖引玉的效果。数据库名称为
Studentdb,只包括一个表( de n1),其结构如下:
字段名称
注释
databaaefde 口山:
D =.
: U【I)=…
代号
姓名
生日
年级
Pmw r MSDASQL;
.1-
;
ysics
PWD pa ̄word;
例如:
cnnc c 姗s
班
+ DRⅣER=1 M_c喁 0DBcf砷mdeI;r一
十 SERVER:
+ DSN ; 一
+ dambo ̄enme=
学费
数学
语文
蜘理
化学
历史
geoblo1%,y
bid0
+ databa ̄efde=d)1 e,la
+ IU=dh;_-
+ PWD—cY
地理
4对于In 皿 敷据库:
生物
体育
APH.10,2002 NO.4
囊
维普资讯
蚌{b舍籼电肛
1.调试程序时需要注意以下问题:
(1)服务器端Sybase数据库服务必须处于启动
状态;
软件技术
2002年4月10日第4期
曩
印衅【ConnH ̄dle.  ̄lezlcode nam grade.clas6,matbmfm ̄tuden-
twhe ̄grade= +V ̄grade+ andcl ̄=“+V哦l…~ rna …
=sqlex ̄{C伪J口H蛐dkl
・表单中加^页框控件.表格控件
TH ̄SFOILM Pagefmmel Pa l Gndl ReeordScu ̄e= c LⅡs
(2)客户端安装必须选中“、/”ODBC Driver组
件:
一
TIUSFORM Pagefrawel Pagel Gtidl Rec¨几ls0u e1 =l&&别名
THI ̄FORM bⅧeI_Pagel Grid1 c u啊口l C Ⅱ _Hlr = “自c
(3)客户端通过Open Client程序组中的Dsedit
组件配置连接,具体连接操作过程如下:“Dsedit”一
“AddServerObject”一输人服务名称(ServerNarne)一
Ⅻ
THISFORM.Page am l PalgeI G ̄idl Col ̄n2 Gantr ̄lSaum*:"malhsear-
…
THISFORM Pagef ̄el Page1.Gridl C ̄lum3 Cor s0ur = rl-alI一
nde
THISFOILM Pagef ̄el Pa I_Gridl Column4 C0mr0】s。u = mmI—
“OK”一“单击”选择所输人服务名称一“单击”
…】B8
“ServerAddress”一“右键”一“ModifyAttributes”一
TH[SFORM Pa硝m I.Pagel Gtid1.CMmm5 CmtrdS0mce= 哪Ⅱ嗍
钟,maths
“Add”一选择“TCP”协议一“NetworkAddress”在此输
入IP地址和端口号,例:10.23.12.120,5O00一
“Pin erver”
。
・修改
日 Be rDp(Co ̄Ka,tdl ̄. lm.sacti ̄* .2】&&设置^工事务处理
=日 P叽(cobnHB口d】 *updalestud ̄ntsclgrade= +l )&&新年升级
测试是否连通,否则检查机器连接或
处理
=gqhec(c—H ile)
重复上述过程。
(4)注意Visua/FoxPro 6 0与Sybase两种数据
库数据类型的对应关系。
2.关键程序段
・连接远程散据豫
ifm ̄agcboI【 确定储改所输^散据信息吗? 4+强 运行提示 】=6
=wk∞ 口 fC∞bH卸m)
dBe
=s ∞陆a (C. ̄nHandh)
THISFORMtext1.ef ̄u*
cadif
删除
”】 l】da帅tl2.2 借稍后’正在莲接远程散据豫
Varrmde=THLSPOILM 1htl Vala ̄
vaTDn唧=THISFORM Textl Vahc
VarSe ̄er=THISFORM Tera2 vB
V ̄D,tabase=THISlY0RM Text3 Valu
Var【_靶r=TH酷阳RM t4 Va/ue
=sg]Be rDp(c0仰H日TIdk.’Iran ̄ctlms
2】&&设置^工事务处理
=自 玳p眦(Comdht:dh
+~)
=sqlexec(C,nnHBD e)
cntwh ̄ade=”+
VarP ̄sw,rd=11仉sFORM Teit5 V ue
ifmema ̄ebox【 确定删除所输^散据信息吗? 4+弛. 运行提示 】 6
DRP/ER={。+alltif.,
DB= +allmm
PV ̄3)= +slhnm ,
=sqleomrait[ConnH ̄dle}
dBe
Storeaqlstringconn ̄l("Provider=MSDASQL;
(v盯嘶v
(Yardalaba ̄e J+ : U/D= +alltnm【V ̄User】+
+ 】,DSN= SRVR= + hnm(v 5 e开l+
=sqlrollb ̄k(CamtHmmdle)
TH1SFOPd ̄te ̄tl seff ̄us
fv P瞻
l
)) c蛐nH彻dle&&c肋J小卸 为莲接句柄
H e∞
: ̄agebox(.p.ce(4】+ 连接远程散据源戋败!原目如下: +ehr【10),
增加
16. 错
Va】。0de=THISFORM Text1 Value
Vm…] ̄ISFORM Teztl value
+ l'SYBASE信息 参数配置不正确 + ̄112【10 J,
+ SYBASE服务p+alhrim(apper(VarSe ̄er))+ )未启动c
误提示: }
wal'cIe
c10Beall
嗍Ilm
=
=B
p(c0仰H日凸dk,’㈣【∞珊’.2 J&&设置^工事务处理
…,biahda ̄., pm(C ̄mdtmdle. sER T 0sIlI口 t{code,
ds
wa】tcle
grark-,cl删,tuitian,哪 B, ̄hin ̄,Ph"I憾,eh ̄istr ̄,hlst ̄6.,geo ̄iolog7.I:d0kg ̄,
gym}:
V^I¨蓦c。 +Vs2eede+ ’. +V椰BⅡ + 。. +Varblttkda ̄,+ ’, +
=eqldi ̄onneetICo.Handle
e.dif
ENDPROC
V ̄grade+ . +V8ld . +V.r ̄mtlon+ . +V ̄ath*+ , +Varchl-
…+ +Varph) ̄ies+ +V盯cbe硼岬+ + ,+ +V盯g 0hld
+ , +Vsrbiolc ̄'+ , +Var ̄m]+’】 )
=如kxec(CmmH ̄dle1
n—
= qldLseon ̄ctfConnH ̄dle}
elo ̄eall
E DPBOC
eLs
ebo 确定增加所转^数据信息鸡 4+3z, 运行提示 }=6
=sq]c ̄mitlCo¨¨H日TIme1
…h ̄ollbaekIC nH&ndle}
・查询
THISFORM.1extl 5 l 峙
e ̄dif
&&结果存^白定义游标M拈宣cu~
=aqlsetprop(CamnH ̄d]e.’bamhmode’.T】&&设置一次返回所有结果
集
衄
APR.1O.2o02 No.4


发布评论