Visual FoxPro 60与大型数据库的无数据源连接.docx
- 文档编号:18536317
- 上传时间:2023-08-19
- 格式:DOCX
- 页数:18
- 大小:24.85KB
Visual FoxPro 60与大型数据库的无数据源连接.docx
《Visual FoxPro 60与大型数据库的无数据源连接.docx》由会员分享,可在线阅读,更多相关《Visual FoxPro 60与大型数据库的无数据源连接.docx(18页珍藏版)》请在冰点文库上搜索。
VisualFoxPro60与大型数据库的无数据源连接
VisualFoxPro6.0与大型数据库的无"数据源"连接(转)
Fox系列数据库产品作为一种开发信息管理系统的微机常用工具,而深受开发人员以及广大用户的喜爱,但由于微电子技术的飞速发展,CPU处理速度的快速提升,硬盘的容量、速度及其它性能的显著提高,使得原来运行于小、中型机等高档次计算机上的SQLServer、Oracle、Sybase等大型数据库得以在微机上推广应用,使得较为流行的Fox系列微机数据库暗然失色,但随着VisualFoxPro3.0以及5.0、6.0版本的推出,引入了许多新的特性,因其融入可视化编程,面向对象程序设计以及ODBC技术,它们的发布给其带来新的生机。
一.VisualFoxPro6.0作为客户端开发工具的技术特点:
VisualFoxPro6.0提供了支持客户机/服务器所需要的各种特征,包括SQL传递技术、事务处理、远程视图、数据字典、NULL类型、数据库升迁、及对ODBC资源的仪程;通过ODBC,可以访问几乎任何类型的数据库,如Oracle、SQLServer、Sybase等主流数据库,不失为客户机/服务器结构应用系统的客户端优秀开发工具,具有如下的特点:
1.开发应用系统快捷、方便,可以减轻开发人员的劳动强度,节省大量的开发时间:
面向对象特性,如对象、类及其继承性、封闭性、多态性属性等,作为XBASE语言的扩展集而实现,提供了对面向对象程序设计的全面支持,使开发者更多把精力放在系统前期分析和程序设计上,而不是编码上。
遵循所见即所得的原则,提供了向导、代码范围分析器、项目管理器、设计器和生成器等图形化风格的交互开发工具,使设计工作在富有情趣的环境中进行。
多姿多彩的工具栏,给用户带来诸多的便利。
2.方便实现数据共享、转换:
VisualFoxpro与其他Windows应用程序紧密结合,支持所有Windows的数据共享机制,包括动态连接库(DLL,DynamicLinkLibrary)、动态数据交换(DDE,DynamicDataExchange)及对象连接和嵌入(OLE,ObjectLinkingandEmbedding)等,可以与Microsoft其他应用软件,如Word、Excel等,共享数据资源,快转换成各种格式文档资料;可以利用OLE自动化命令调用其他软件中的数据。
3.丰富多媒体数据处理功能:
VisualFoxpro6.0不但能进行文本格式文件、数据库文件的处理,还提供对GIF(GraphicsInterchangeFormat)和JPEG(JointPhotographicElectronicGroup)图形文件的支持,它提供了一个多媒体控制接口。
通过多媒体控制接口(MCI,MultimediaControlInterface),无须介入实际设备的复杂编程就可以操纵所有的多媒体设备,例如,对MMControl控件的简单编程就可以实现视频文件、音频文件的播放等操作。
4.方便的应用编程接口(API,ApplicationProgrammingInterface)调用:
VisualFoxpro6.0提供了应用编程接口(API),把其与VisualStudio套件中的其他开发工具融为一体,紧密结合,可以满足较复杂的应用系统编程需求。
5.开发应用系统体积小、运行速度快:
VisualFoxpro大量应用动态连接库(DLL,DynamicLinkLibrary)机制,DLL具有一次调入内存可被多各程序、线程调用,大大减小了内存空间占用,缩小所编译程序的长度。
二.数据库连接及操作函数:
VisualFoxPrp6.0数据库与其它数据库的连接有两种方法:
一种使用控件连接;另一种使用函数连接。
1.用控件连接数据库方法:
在表单中加入ADO控件,具体实现过程如下:
①.建表单VisualFoxPro→“新建”→“表单”→“新建文件”;
②.选择控件“工具”→“选择”→“控件”→选中“控件”→选择“MicrosoftADODataControl,Version6.0(OLEDB)”控件→“确定”;
③.添加控件“查看类”→选择“ActiveX控件”→在显示控件中选择“MicrosoftADODataControl,Version6.0(OLEDB)”控件→在表单中加入“ADO”控件;
④.设置ADO对象属性,如ConnectionString、UserName、PassWord、CommandType、RecordSource等。
2.用函数连接数据库方法:
这是本文重介绍的方法。
下面让我们来认识下列一组函数,它们是SQLCONNECT()、SQLSTRINGCONNECT()、SQLDISCONNECT()、SQLGETPROP()、SQLSETPROP()、SQLPREPARE()、SQLEXEC()、SQLCANCEL()、SQLMORERESULTS()、SQLCOLUMNS()、SQLTABLES()、SQLCOMMIT()和SQLROLLBACK(),它们可以全面完成数据库的连接、处理与提交处理,见下表。
类别函数名称运行方式函数功能
连接
处理SQLCONNECT([DataSourceName,
cUserID,cPassword|
cConnectionName])异步建立与数据源的连接。
SQLSTRINGCONNECT
([cConnectString])异步通过连接字符串建立与数据源的连接。
SQLDISCONNECT(nConnectHandle)
异步断开数据源连接。
连接
设置
处理SQLGETPROP(nConnectionHandle,
cSetting)异步返回活动连接的当前设置或缺省设置参数值。
SQLSETPROP(nConnectionHandle,
cSetting[,eExpression])异步设置活动连接的属性参数值。
SQL
语句
执行
处理SQLPREPARE(nConnectionHandle,
cSQLCommand[,CursorName])异步准备SQLEXEC()远程执行的SQL语句。
SQLEXEC(nConnectionHandle
[,cSQLCommand[,CursorName]])同步,异步将SQL语句发送到数据源进行处理。
SQLCANCEL(nConnectionHandle)
异步请求取消正在执行的SQL语句。
数据
处理SQLMORERESULTS(nConnectHandle)
同步,异步如果有多个结果集,将另一个结果集复制到游标中。
SQLCOLUMNS(nConnectionHandl,
Tablename[,"FOXPRO"|"NATIVE"]
[,CursorName])同步,异步将数据源指定表的列信息存放到VisualFoxPro游标中。
SQLTABLES(nConnectionHandle
[,cTableTypes][,cCursorName])同步,异步将数据源中表的信息存放到VisualFoxPro游标中。
事务
处理SQLCOMMIT(nConnectionHandle)
异步提交一项事务。
SQLROLLBACK(nConnectionHandle)
异步取消当前事务处理过程中所做全部处理。
函数名称参数注释数值类型函数功能
SQLCONNECT
([DataSourceName,cUserID,
cPassword|cConnectionName])DataSourceName指定ODBC.ini文件中定义的数据源的名称;
cUserID注册到数据源的用户名称;
cPassword数据源用户口令;
cConnectionName由CREATECONNECTION创建的命名连接.数值型正整数执行成功;
-1出现连接层错误;
-2出现环境层错误.
SQLSTRINGCONNECT
([cConnectString])cConnectStringODBC驱动器所要求的数据源连接串,VisualFoxPro将连接串传递给ODBC驱动器.数值型正整数执行成功;
-1出现连接层错误;
-2出现环境层错误.
SQLDISCONNECT
(nConnectHandle)nConnectionHandle连接句柄.数值型1执行成功;
-1出现连接层错误;
-2出现环境层错误.
SQLGETPROP
(nConnectionHandle,cSetting)nConnectionHandle连接句柄;
cSetting连接属性名称.数值型1执行成功;
-1出现连接层错误;
-2出现环境层错误.
SQLSETPROP
(nConnectionHandle,
cSetting[,eExpression])nConnectionHandle连接句柄;
cSetting连接属性名称;
eExpression连接属性参数值.数值型1执行成功;
-1出现连接层错误;
-2出现环境层错误.
SQLPREPARE
(nConnectionHandle,
cSQLCommand[,CursorName])nConnectionHandle连接句柄;
cSQLCommand传递到数据源的SQL语句;
CursorName存放结果集的游标名称,缺省游标名SQLRESULT.数值型1执行成功;
-1出现连接层错误;
-2出现环境层错误.
SQLEXEC
(nConnectionHandle
[,cSQLCommand[,CursorName]])nConnectionHandle连接句柄;
cSQLCommand传递到数据源的SQL语句;
CursorName存放结果集的游标名称,缺省游标名SQLRESULT.数值型1执行成功;
-1出现连接层错误;
-2出现环境层错误.
SQLCANCEL
(nConnectionHandle)nConnectionHandle连接句柄.数值型1执行成功;
-1出现连接层错误;
-2出现环境层错误.
SQLMORERESULTS
(nConnectionHandle)nConnectionHandle连接句柄.数值型2已经没有数据;
1执行成功;
-1出现连接层错误;
-2出现环境层错误.
SQLCOLUMNS
(nConnectionHandl,
Tablename[,"FOXPRO"|"NATIVE"]
[,CursorName])nConnectionHandle连接句柄;
TableName返回其列名的表的名称;
FOXPRO|NATIVE列信息的格式;
CursorName存放结果集的游标名称,缺省游标名SQLRESULT.数值型1执行成功;
-1出现连接层错误;
-2出现环境层错误.
SQLTABLES
(nConnectionHandle
[,cTableTypes][,cCursorName])nConnectionHandle连接句柄;
cTableTypes指定一个或几个表类型,类型有'TABLE','VIEW','SYSTEMTABLE'或者数据源特定的合法的表类型标识符,必须大写,若多个类型,各类型间以逗号分隔;
CursorName存放结果集的游标名称,缺省游标名SQLRESULT.数值型1执行成功;
-1出现连接层错误;
-2出现环境层错误.
SQLCOMMIT
(nConnectionHandle)nConnectionHandle连接句柄.数值型1执行成功;
-1出现连接层错误;
-2出现环境层错误.
SQLROLLBACK
(nConnectionHandle)nConnectionHandle连接句柄.数值型1执行成功;
-1出现连接层错误;
-2出现环境层错误.
下面让我们来认识一下连接属性及连接属性参数值:
属性名称数值类型缺省值注释
Asynchronous逻辑型
可读写.F..F.同步返回结果集;
.T.同步返回结果集.
BatchMode逻辑型
可读写.T..F.由SQLMORERESULTS()逐个返回结果集;
.T.由SQLEXEC()一次返回所有结果集.
ConnectBusy逻辑型
只读不定.F.共享连接不忙;
.T.共享连接繁忙.
ConnectString字符型
只读不定注册连接串.
ConnectTimeOut数值型
可读写15设置返回连接超时错误之前等待的时间(秒);
0无限期等待,并且不返回连接超时错误;
可以是0~600.
DataSource字符型
可读写不定ODBC.INI文件中定义的数据源名称.
DispLogin数值型
可读写11或DB_PROMPTCOMPLETE(源于FOXPRO.H),仅当缺少必要信息时才显示ODBC注册对话框;
2或DB_PROMPTALWAYS(源于FOXPRO.H),总显示ODBC注册对话框,允许在连接前更改设置;
3或DB_PROMPTNEVER(源于FOXPRO.H),从不显示ODBC注册对话框,如果缺少必要信息,会产生错误.
DispWarnings逻辑型
可读写.F..F.不显示错误信息;
.T.显示错误信息.
IdleTimeOut数值型
可读写0空闲超时间隔(秒),时间问隔过后,废止活动连接;0无限期等待.
ODBChdbc数值型
只读不定外部库文件(FLL文件)调用ODBC可使用的内部ODBC连接句柄.
ODBChstmt数值型
只读不定外部库文件(FLL文件)调用ODBC可使用的内部ODBC语句句柄.
PacketSize数值型
可读写4096连接所使用的网络包大小,调整该值可以改善性能.
PassWord字符型
只读不定连接口令.
QueryTimeOut数值型
可读写0返回一般超时错误之前的等待时间(秒);
0无限期等待,不返回超时错误;
可以是0~600.
Transactions数值型
可读写11或DB_TRANSAUTO(源于FOXPRO.H),自动进行远程表事务处理;
2或者DB_TRANSMANUAL(源于FOXPRO.H),事务处理通过SQLCOMMIT()和SQLROLLBACK()函数人工进行.
UserId数值型
只读不定用户标识.
WaitTime数值型
可读写100检查SQL命令执行情况之前经过的时间(毫秒).
三.细说连接字符串(或ConnectionString):
在SQLSTRINGCONNECT([cConnectString])函数中变量cConnectString与ADO控件对象的ConnectionString属性具有相同一致的内容,为可读写String类型,提供数据提供者或服务提供者打开到数据源连接所需要的特定信息,就MicrosoftOLEDBProviderforODBC
提供者来讲包括Provider、driver、Server、database、DSN、UID、PWD等,在以前发表的文章中已经谈过,这里再赘述一下。
1.Provider:
字符串表达式,指定OLEDB数据或服务提供者的名称。
三种提供者:
数据提供者、服务提供者和服务组件,分为两类,提供数据的提供者和提供服务的提供者。
数据提供者拥有其自己的数据并将数据以表的格式显露给应用程序。
服务提供者通过产生和消费数据将服务封装,使ADO应用程序中的功能得以扩大。
服务提供者也可以进一步定义为服务组件,服务组件必须连同其他服务提供者或组件一起工作。
①.数据提供者:
由于每个提供者都是唯一的,所以应用程序与ADO交互作用的方式在不同的提供者之间略有差别,应用时需要注意它们之间的差别。
不同数据提供者(Provider)其值归结于以下:
内容主题字符串值
ODBC数据库MicrosoftOLEDBProviderforODBCMSDASQL
Microsoft?
IndexServerMicrosoftOLEDBProviderforMicrosoftIndexServerMSIDXS
Microsoft?
ActiveDirectoryServiceMicrosoftOLEDBProviderforMicrosoftActiveDirectoryServiceADSDSOObject
Microsoft?
Jet数据库OLEDBProviderforMicrosoftJetMicrosoft.Jet.OLEDB.4.0
Microsoft?
SQLServerMicrosoftOLEDBProviderforSQLServerSQLOLEDB
Oracle数据库MicrosoftOLEDBProviderforOracleMSDAORA
②.服务提供者:
要使用服务提供者,必须提供关键字。
同时,也应当知道与每个服务提供者相关联的、特定提供者的动态属性。
当前可从Microsoft获得的每个服务提供者的特定提供者(Provider)其值资料如下:
主题字符串值
MicrosoftDataShapingServiceforOLEDBMSDataShape
MicrosoftOLEDBPersistenceProviderMSPersist
MicrosoftOLEDBRemotingProviderMSRemote
2.DRIVER:
字符串表达式,表示ODBC驱动程序的名称。
它并不是ODBC驱动程序动态连接库(DLL)文件名。
对于其中的定义必须用{}括起来,名称的选择可以通过以下途径:
对于Windows9x和WindowsNT:
"开始"→"设置"→"控制面板"→"数据源(ODBC)"→"ODBC数据源管理器"→"驱动程序"中
对于Windows2000:
"开始"→"设置"→"控制面板"→"管理工具"→"数据源(ODBC)"→"ODBC数据源管理器"→"驱动程序"中
可以看到下列驱动程序名称:
DriverdaMicrosoftparaarquivostexto(*.txt;*.csv)
DriverdoMicrosoftAccess(*.mdb)
DriverdoMicrosoftdBase(*.dbf)
DriverdoMicrosoftExcel(*.xls)
DriverdoMicrosoftParadox(*.db)
DriverparaoMicrosoftVisualFoxPro
MicrosoftAccessDriver(*.mdb)
MicrosoftAccess-Treiber(*.mdb)
MicrosoftdBaseDriver(*.dbf)
MicrosoftdBaseVFPDriver(*.dbf)
MicrosoftdBase-Treiber(*.dbf)
MicrosoftExcelDriver(*.xls)
MicrosoftExcel-Treiber(*.xls)
MicrosoftFoxProDriver(*.dbf)
MicrosoftFoxProVFPDriver(*.dbf)
MicrosoftODBCforOracle
MicrosoftParadoxDriver(*.db)
MicrosoftParadox-Treiber(*.db)
MicrosoftTextDriver(*.txt;*.csv)
MicrosoftText-Treiber(*.txt;*.csv)
MicrosoftVisualFoxProDriver
MicrosoftVisualFoxPro-Treiber
SQLServer
SybaseSystem11
从其中选择自己所需要的驱动程序名称,值得指出的是有些驱动程序是微软公司的产品在安装操作系统时就安装了,而有些数据库产品的驱动程序由开发数据库产品的软件公司随数据库产品一起提供,需在安装数据库时选择安装上,才可以使用。
否则在此找不到驱动程序。
例如:
Sybase数据库驱动程序。
3.SERVER(SRVR):
字符串表达式,一些资料介绍为服务器名称,经笔者实践认为确切地应为数据库服务名称,由于象SQLServer、Sybase等数据库在安装时自动把服务器名称缺省设置为数据库服务名称,但如果只在“我的电脑”→“属性”→“网络标识”→“属性”中更改计算机名,而不改变数据库服务名称,使之不相同,在程序中应以数据库服务名称为准。
4.DATABASE(DB):
字符串表达式,指定要与其建立连接的数据库名称。
需要特别指出的是即使DSN定义已经指定了数据库,也可以在DSN之外指定DATABASE参数以便连接到不同的数据库。
这同时更改了DSN定义以包括指定的数据库。
使用DSN时始终包括DATABASE参数是一种好办法。
这样将保证能连接到正确的数据库,因为其他用户可能会在上一次检查DSN定义后更改默认的数据库参数。
5.DSN(DataSource):
字符串表达式,在此为空,无须指定连接的ODBC数据源的名称
6.UID(UserID):
字符串表达式,为ODBC数据源指定用户标识(用户帐号名),指定用户必须有足够的权限。
7.PWD(Password):
字符串表达式,为ODBC数据源指定用户口令,必须有足够的权限。
四.非DSN连接字符串的组成:
除了ADO所定义的参数外,提供者不支持任何特定连接参数。
但是,提供者将把任何非ADO连接参数传递给ODBC驱动程序管理器。
由于可以省略Provider参数,因此使用与撰写ODBC连接字符串时用的相同参数名(DRIVER=、DATABASE=、DSN=等等)、值和语法,可以撰写与同一数据源的ODBC连接字符串相同的ADO连接字符串。
1.对于SQLServer数据库:
[Provider=MSDASQL;]
DRIVER={DriverName};
SERVER=server;
DATABASE=database;
UID=user;
PWD=password"
例如:
cnna.ConnectionString="Provider=MSDASQL;"_
+"driver={SQLServer};"_
+"server=servera;"_
+"database=pubs;"_
+"uid=sa;"_
+"pwd=yyuui"
2.对于Sybase数据库:
[PROVIDER=MSDASQL;]
DRIVER={DriverName};
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Visual FoxPro 60与大型数据库的无数据源连接 60 大型 数据库 数据源 连接
![提示](https://static.bingdoc.com/images/bang_tan.gif)