【vfp开源代码栏目提醒】:以下是网学会员为您推荐的vfp开源代码-Visual FoxPro 6 与大型数据库的无数据源连接 doc - 技术总结,希望本篇文章对您学习有所帮助。
Visual FoxPro 6.0与大型数据库的无quot数据源quot连接 Fox系列数据库产品作为一种开发信息
管理系统的微机
常用工具而深受开发人员以及广大用户的喜爱但由于微电子技术的飞速发展CPU处理速度的快速提升硬盘的容量、速度及其它性能的显著提高使得原来运行于小、中型机等高档次计算机上的SQL Server、Oracle、Sybase等大型数据库得以在微机上推广应用使得较为流行的Fox系列微机数据库暗然失色但随着Visual FoxPro 3.0以及5.0、6.0版本的推出引入了许多新的特性因其融入可视化编程面向对象程序设计以及ODBC技术它们的发布给其带来新的生机。
一Visual FoxPro 6.0作为客户端开发工具的技术特点 Visual FoxPro 6.0提供了支持客户机/服务器所需要的各种特征包括SQL传递技术、事务处理、远程视图、数据字典、NULL类型、数据库升迁、及对ODBC资源的仪程通过ODBC可以访问几乎任何类型的数据库如Oracle、SQL Server、Sybase等主流数据库不失为客户机/服务器结构应用系统的客户端优秀开发工具具有如下的特点 1开发应用系统快捷、方便可以减轻开发人员的劳动强度节省大量的开发时间面向对象特性如对象、类及其继承性、封闭性、多态性属性等作为XBASE语言的扩展集而实现提供了对面向对象程序设计的全面支持使开发者更多把精力放在系统前期分析和程序
设计上而不是编码上。
遵循所见即所得的原则提供了向导、
代码范围分析器、项目管理器、设计器和生成器等图形化风格的交互开发工具使设计工作在富有情趣的环境中进行。
多姿多彩的工具栏给用户带来诸多的便利。
方便实现数据共享、转换Visual Foxpro与其他Windows应用程序紧密结合支持所有Windows的数据共享机制包括动态连接库DLLDynamic Link Library、动态数据交换DDEDynamic Data Exchange及对象连接和嵌入OLEObject Linking and Embedding等可以与Microsoft其他应用软件如Word、Excel等共享数据资源快转换成各种格式
文档资料可以利用OLE自动化命令调用其他
软件中的数据。
丰富多媒体数据处理功能Visual Foxpro 6.0不但能进行文本格式文件、数据库文件的处理还提供对GIFGraphics Interchange Format和JPEGJoint Photographic Electronic Group图形文件的支持它提供了一个多媒体控制接口。
通过多媒体控制接口MCIMultimedia Control Interface无须介入实际设备的复杂编程就可以操纵所有的多媒体设备例如对MMControl控件的简单编程就可以实现视频文件、音频文件的播放等操作。
方便的应用编程接口APIApplication Programming Interface调用Visual Foxpro 6.0提供了应用编程接口API把其与Visual Studio套件中的其他开发工具融为一体紧密结合可以满足较复杂的应用
系统编程需求。
开发应用系统体积小、运行速度快Visual Foxpro大量应用动态连接库DLLDynamic Link Library机制DLL具有一次调入内存可被多各程序、线程调用大大减小了内存空间占用缩小所编译程序的长度。
二数据库连接及操作函数: Visual FoxPrp 6.0数据库与其它数据库的连接有两种方法:一种使用控件连接另一种使用函数连接。
用控件连接数据库方法在表单中加入ADO控件具体实现过程如下 ①建表单Visual FoxPro→“新建”→“表单”→“新建文件” ②选择控件“工具”→“选择”→“控件”→选中“控件”→选择“Microsoft ADO Data ControlVersion 6.0OLEDB”控件→“确定” ③添加控件“查看类”→选择“ActiveX控件”→在显示控件中选择“Microsoft ADO Data ControlVersion 6.0OLEDB”控件→在表单中加入“ADO”控件 ④设置ADO对象属性如ConnectionString、UserName、PassWord、CommandType、RecordSource等。
用函数连接数据库方法这是本文重介绍的方法。
下面让我们来认识下列一组函数它们是SQLCONNECT、SQLSTRINGCONNECT、SQLDISCONNECT、SQLGETPROP、SQLSETPROP、SQLPREPARE、SQLEXEC、SQLCANCEL、SQLMORERESULTS、SQLCOLUMNS、SQLTABLES、SQLCOMMIT和SQLROLLBACK它们可以全面完成数据库的连接、处理与提交处理见下表。
类别 函数名称 运行方式 函数功能 连接 处理 SQLCONNECTDataSourceName cUserIDcPassword cConnectionName 异步 建立与数据源的连接。
SQLSTRINGCONNECT cConnectString 异步 通过连接字符串建立与数据源的连接。
SQLDISCONNECTnConnectHandle 异步 断开数据源连接。
连接 设置 处理 SQLGETPROPnConnectionHandle cSetting 异步 返回活动连接的当前设置或缺省设置参数值。
SQLSETPROPnConnectionHandle cSettingeExpression 异步 设置活动连接的属性参数值。
SQL 语句 执行 处理 SQLPREPAREnConnectionHandle cSQLCommandCursorName 异步 准备SQLEXEC远程执行的SQL语句。
SQLEXECnConnectionHandle cSQLCommandCursorName 同步异步 将SQL语句发送到数据源进行处理。
SQLCANCELnConnectionHandle 异步 请求取消正在执行的SQL语句。
数据 处理 SQLMORERESULTSnConnectHandle 同步异步 如果有多个结果集将另一个结果集复制到游标中。
SQLCOLUMNSnConnectionHandl TablenamequotFOXPROquotquotNATIVEquot CursorName 同步异步 将数据源指定表的列信息存放到Visual FoxPro游标中。
SQLTABLESnConnectionHandle cTableTypescCursorName 同步异步 将数据源中表的信息存放到Visual FoxPro游标中。
事务 处理 SQLCOMMITnConnectionHandle 异步 提交一项事务。
SQLROLLBACKnConnectionHandle 异步 取消当前事务处理过程中所做全部处理。
函数名称 参数注释 数值类型 函数功能 SQLCONNECT DataSourceNamecUserID cPasswordcConnectionName DataSourceName指定ODBC.ini文件中定义的数据源的名称 cUserID注册到数据源的用户名称 cPassword数据源用户口令 cConnectionName由CREATE CONNECTION创建的命名连接. 数值型 正整数执行成功 -1出现连接层错误 -2出现环境层错误. SQLSTRINGCONNECT cConnectString cConnectStringODBC驱动器所要求的数据源连接串Visual FoxPro将连接串传递给ODBC驱动器. 数值型 正整数执行成功 -1出现连接层错误 -2出现环境层错误. SQLDISCONNECT nConnectHandle nConnectionHandle连接句柄. 数值型 1执行成功 -1出现连接层错误 -2出现环境层错误. SQLGETPROP nConnectionHandlecSetting nConnectionHandle连接句柄 cSetting连接属性名称. 数值型 1执行成功 -1出现连接层错误 -2出现环境层错误. SQLSETPROP nConnectionHandle cSettingeExpression nConnectionHandle连接句柄 cSetting连接属性名称 eExpression连接属性参数值. 数值型 1执行成功 -1出现连接层错误 -2出现环境层错误. SQLPREPARE nConnectionHandle cSQLCommandCursorName nConnectionHandle连接句柄 cSQLCommand传递到数据源的SQL语句 CursorName存放结果集的游标名称缺省游标名SQLRESULT. 数值型 1执行成功 -1出现连接层错误 -2出现环境层错误. SQLEXEC nConnectionHandle cSQLCommandCursorName nConnectionHandle连接句柄 cSQLCommand传递到数据源的SQL语句 CursorName存放结果集的游标名称缺省游标名SQLRESULT. 数值型 1执行成功 -1出现连接层错误 -2出现环境层错误. SQLCANCEL nConnectionHandle nConnectionHandle连接句柄. 数值型 1执行成功 -1出现连接层错误 -2出现环境层错误. SQLMORERESULTS nConnectionHandle nConnectionHandle连接句柄. 数值型 2已经没有数据 1执行成功 -1出现连接层错误 -2出现环境层错误. SQLCOLUMNS nConnectionHandl TablenamequotFOXPROquotquotNATIVEquot CursorName nConnectionHandle连接句柄 TableName返回其列名的表的名称 FOXPRONATIVE列信息的格式 CursorName存放结果集的游标名称缺省游标名SQLRESULT. 数值型 1执行成功 -1出现连接层错误 -2出现环境层错误. SQLTABLES nConnectionHandle cTableTypescCursorName nConnectionHandle连接句柄 cTableTypes指定一个或几个表类型类型有TABLEVIEWSYS TEM TABLE或者数据源特定的合法的表类型标识符必须大写 若多个类型各类型间以逗号分隔 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无限期等待并且不返回连接超时错误 可以是0600. DataSource 字符型 可读写 不定 ODBC.INI文件中定义的数据源名称. DispLogin 数值型 可读写 1 1或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无限期等待不返回超时错误 可以是0600. Transactions 数值型 可读写 1 1或DB_TRANSAUTO源于FOXPRO.H自动进行远程表事务处理 2或者DB_TRANSMANUAL源于FOXPRO.H事务处理通过SQLCOMMIT和SQLROLLBACK函数人工进行. UserId 数值型 只读 不定 用户标识. WaitTime 数值型 可读写 100 检查SQL命令执行情况之前经过的时间毫秒. 三细说连接字符串或ConnectionString 在SQLSTRINGCONNECTcConnectString函数中变量cConnectString与ADO控件对象的ConnectionString属性具有相同一致的内容为可读写String类型提供数据提供者或服务提供者打开到数据源连接所需要的特定信息就Microsoft OLE DB Provider for ODBC 提供者来讲包括Provider、driver、Server、database、DSN、UID、PWD等在以前发表的文章中已经谈过这里再赘述一下。
1Provider字符串表达式指定OLE DB数据或服务提供者的名称。
三种提供者数据提供者、服务提供者和服务组件分为两类提供数据的提供者和提供服务的提供者。
数据提供者拥有其自己的数据并将数据以表的格式显露给应用程序。
服务提供者通过产生和消费数据将服务封装使ADO应用程序中的功能得以扩大。
服务提供者也可以进一步定义为服务组件服务组件必须连同其他服务提供者或组件一起
工作。
①数据提供者 由于每个提供者都是唯一的所以应用程序与ADO交互作用的方式在不同的提供者之间略有差别应用时需要注意它们之间的差别。
不同数据提供者Provider其值归结于以下 内容 主题 字符串值 ODBC数据库 Microsoft OLE DB Provider for ODBC MSDASQL Microsoft Index Server Microsoft OLE DB Provider for Microsoft Index Server MSIDXS Microsoft Active Directory Service Microsoft OLE DB Provider for Microsoft Active Directory Service ADSDSOObject Microsoft Jet数据库 OLE DB Provider for Microsoft Jet Microsoft.Jet.OLEDB.4.0 Microsoft SQL Server Microsoft OLE DB Provider for SQL Server SQLOLEDB Oracle数据库 Microsoft OLE DB Provider for Oracle MSDAORA ②服务提供者 要使用服务提供者必须提供关键字。
同时也应当知道与每个服务提供者相关联的、特定提供者的动态属性。
当前可从Microsoft获得的每个服务提供者的特定提供者Provider其值资料如下 主题 字符串值 Microsoft Data Shaping Service for OLE DB MSDataShape MicrosoftOLE DB Persistence Provider MSPersist Microsoft OLE DB Remoting Provider MS Remote DRIVER字符串表达式表示ODBC驱动程序的名称。
它并不是ODBC驱动程序动态连接库DLL文件名。
对于其中的定义必须用括起来名称的选择可以通过以下途径 对于Windows 9x和Windows NT: quot开始quot→quot设置quot →quot控制面板quot →quot数据源ODBCquot →quotODBC数据源管理器quot →quot驱动程序quot中 对于Windows 2000: quot开始quot→quot设置quot →quot控制面板quot→quot管理工具quot →quot数据源ODBCquot →quotODBC数据源管理器quot →quot驱动程序quot中 可以看到下列驱动
程序名称 Driver da Microsoft para arquivos texto .txt.csv Driver do Microsoft Access .mdb Driver do Microsoft dBase .dbf Driver do Microsoft Excel .xls Driver do Microsoft Paradox .db Driver para o Microsoft Visual FoxPro Microsoft Access Driver .mdb Microsoft Access-Treiber .mdb Microsoft dBase Driver .dbf Microsoft dBase
VFP Driver .dbf Microsoft dBase-Treiber .dbf Microsoft Excel Driver .xls Microsoft Excel-Treiber .xls Microsoft FoxPro Driver .dbf Microsoft FoxPro
VFP Driver .dbf Microsoft ODBC for Oracle Microsoft Paradox Driver .db Microsoft Paradox-Treiber .db Microsoft Text Driver .txt.csv Microsoft Text-Treiber .txt.csv Microsoft Visual FoxPro Driver Microsoft Visual FoxPro-Treiber SQL Server Sybase System 11 从其中选择自己所需要的驱动程序名称值得指出的是有些驱动程序是微软公司的产品在安装操作系统时就安装了而有些数据库产品的驱动程序由开发数据库产品的软件公司随数据库产品一起提供需在安装数据库时选择安装上才可以使用。
否则在此找不到驱动程序。
例如Sybase数据库驱动程序。
3SERVERSRVR字符串表达式一些资料介绍为服务器名称经笔者实践认为确切地应为数据库服务名称由于象SQL Server、Sybase等数据库在安装时自动把服务器名称缺省设置为数据库服务名称但如果只在“我的电脑” →“属性” →“
网络标识” →“属性”中更改
计算机名而不改变数据库服务名称使之不相同在程序中应以数据库服务名称为准。
4DATABASEDB字符串表达式指定要与其建立连接的数据库名称。
需要特别指出的是即使DSN定义已经指定了数据库也可以在DSN之外指定DATABASE参数以便连接到不同的数据库。
这同时更改了DSN定义以包括指定的数据库。
使用DSN时始终包括DATABASE参数是一种好办法。
这样将保证能连接到正确的数据库因为其他用户可能会在上一次检查DSN定义后更改默认的数据库参数。
5DSNData Source字符串表达式在此为空无须指定连接的ODBC数据源的名称 6UIDUser ID字符串表达式为ODBC数据源指定用户标识用户帐号名指定用户必须有足够的权限。
7PWDPass
word字符串表达式为ODBC数据源指定用户口令必须有足够的权限。
四非DSN连接字符串的组成 除了ADO所定义的参数外提供者不支持任何特定连接参数。
但是提供者将把任何非ADO连接参数传递给ODBC驱动程序管理器。
由于可以省略Provider参数因此使用与撰写ODBC连接字符串时用的相同参数名DRIVER、DATABASE、DSN 等等、值和语法可以撰写与同一数据源的ODBC连接字符串相同的ADO连接字符串。
1.对于SQL Server数据库 ProviderMSDASQL DRIVERDriver Name SERVERserver DATABASEdatabase UIDuser PWDpasswordquot 例如 cnna.ConnectionString quotProviderMSDASQLquot_ quotdriverSQL Serverquot_ quotserverservera quot_ quotdatabasepubs quot_ quotuidsa quot_ quotpwdyyuuiquot 2. 对于Sybase数据库 PROVIDERMSDASQL DRIVERDriver Name SRVRserver 注必须是SRVR而不能是SERVER。
DBdatabase 注可以是DB也可以DATABASE。
DSN 注该项可以省略。
UIDuser PWDpasswod 例如 cnnb.ConnectionString quotProviderMSDASQLquot_ quotDRIVERSybase System 11quot_ quotSRVRserveru quot_ quotDSNquot_ quotDBdataa quot_ quotUIDsa quot_ quotPWDdqwequot_ 3. 对于Oracle数据库 PROVIDERMSDASQL DRIVERDriver Name SERVERserver databasenamedatabase databasefilepath DSN UIDuser PWDpassword 例如 cnnc.ConnectionString quotProviderMSDASQLquot_ quotDRIVERMicrosoft ODBC for Oraclequot_ quotSERVERWebserver quot_ quotDSNquot_ quotdatabasenamedataall quot_ quotdatabasefiled:dataquot_ quotUIDdba quot_ quotPWDzxcvquot 4. 对于Informix数据库 ProviderMSDASQL DriverDriver Name HostIP Adress Databasedatabase UIDuser PWDpassword FetchBufferSizeinteger NoLoginBoxYes Options ProtocolTCP/IP ReadOnlyNo ServerOptions ServerTypeInformix Version 例如 cnnd.ConnectionString quotProviderMSDASQLquot _ quotDriverOpenLink Generic 32 Bit Driverquot _ quotHost11.66.17.151quot _ quotDatabasepubsquot _ quotUIDsaquot _ quotPWDasdfquot _ quotFetchBufferSize30quot _ quotNoLoginBoxYesquot _ quotOptionsquot _ quotProtocolTCP/IPquot _ quotReadOnlyNoquot _ quotServerOptionsquot _ quotServerTypeInformix 7.2quot 注中的内容可以省略。
五实例一瞥 服务器安装windows 2000 Server操作系统以Sybase 11.9.2数据库作为服务器端数据库管理数据客户端安装Windows 98Sybase客户端程序Open Client以Visual FoxPro 6.0数据库作为客户端开发工具。
扬长避短相得益彰充分发挥Sybase数据库安全性、可靠性高管理数据量大Visual FoxPrp 6.0数据库开发人员熟悉开发速度快程序体积小运行速度快占用资源少的特点。
以Sybase 11.9.2为例编制一个实用的学籍管理程序以期达到抛砖引玉的效果数据库名称为Studentdb只包括一个表Student其结构如下 字段名称 宽度 注释 code nchar 22 代号 name char 8 姓名 birthday nchar 8 生日 grade int 年级 class int 班 tuition numeric 72 学费 maths numeric 52 数学 chinese numeric 52 语文 physicsnumeric 52 物理 che
mistrynumeric 52 化学 history numeric 52 历史 geobiology numeric 52 地理 biology numeric 52 生物 gym numeric 52 体育 调试程序时需要注意以下
问题 ①服务器端Sybase数据库服务必须处于启动状态 ②客户端安装必须选中“√”ODBC Driver组件 ③客户端通过Open Client程序组中的Dsedit组件配置连接具体连接操作过程如下“Dsedit”→“Add Server Object”→输入服务名称Server Name→“OK” →“单击”选择所输入服务名称→“单击”“Server Address” →“右键”→“Modify Attributes”→“Add”→选择“TCP”协议→“Network Address”在此输入IP地址和端口号例10.23.12.1205000→“Ping Server”测试是否连通否则检查机器连接或重复上述过程。
④注意两种数.