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