用VFP开发C/S系统
开发C/S 模式系统,常用DELPHI、VB、PB等数据库开发平台。 其实,用VFP开发C/S系统完全适用。 一. 建立数据库、建立ODBC 数据源
C/S 模式(主从结构)最大优点:将工作合理分配于Server与Client,以便让它们同时发挥所长。 C/S结构包括三部分-网络操作系统、数据库服务器 及前端应用程序。 我们可用VFP + SQL Server + Windows Server 组合方式。
首先,在SQL Server上建立数据库,如:Ningguo ,并创建表,如maintable等,同时,创建一个SQL Server数据库用户如:newguest。
在前台的Client上,建立连接到SQL Server的ODBC 数据源(Data Source), 如 新建数据源first,连接到 SQL Server 上的数据库Ningguo。
二.建立和数据库相连的连接
进入VFP。在VFP开发C/S结构中,远程视图(Remote View)扮演关键角色。
建立远程视图前,须在数据库中建立一个连接(Connection),它记录着登入SQL Server 的相关信息:数据源、用户、密码、数据库名称等,然后,验证连接。
当然,也可用函数建立连接,如:
connect1=SQLSTRINGCONNECT(\
connect2=SQLSTRINGCONNECT(\
ter;LANGUAGE=简体中文\
在某些情况下,程序执行期间,如需更改连接的属性设定,可用DBSETPROP()函数, DBSETPROP()函数,用于更改当前数据库、连接、表、视图、字段 的属性。 如更改connect2 连接串,可用如下命令: OPEN DATABASE test
dbsetprop(\ 备注:函数dbsetprop ()的Syntax语法
dbsetprop (cName, cType, cProperty, ePropertyValue)
三.建立远程视图
建立连接成功后,可建立远程视图。可用视图向导建立视图,也可用命令建立视图。
可用数据源、或连接来创建远程视图:所需字段、键值、联接条件、筛选条件、排序、分组、更新条件、更新方
式分别设置。
VFP中数据类型与SQL Server数据类型不尽相同,不过,有固定关系。 如,SQL的money类型 ,视图中是货币值类型, 又如,SQL的text类型,视图中是备注型,
需要手动调节的类型,如,SQL的datetime类型,视图中要变成 date 型。 特别要注意:
在\更新页面\栏,如要建立可更新视图,须选中\发送SQL更新\栏。
这样,视图任何变动,会主动反映到后端SQL Server 中,就可以用VFP更新后端数据。 远程视图建成,就可以显示、更新数据。
远程视图与表一样,即使其来源于SQL Server 中,可以建立输出、输出界面、报表及标签。 在表单设计、报表设计、标签设计中,将远程视图加至数据环境中,并快速建立数据源字段控制项。
\有条件远程视图\、“离线式视图(Off-line View)”可减少服务器端数据下载量,减轻网络负荷,一些不常更新的数据甚至可以DBF形式直接放置在客户端,提高整个系统的运行效率。
四.SQL Pass-Through (SPT) 技术的运用
一个完善的C/S系统,须辅以SQL Pass-Through 技术,将SQL命令从前端送至后端SQL Server执行。 还可执行SQL Server上的储存过程(Stored Procedure)、系统储存过程(System Stored Procedure)。 如执行SQL Server的系统储存过程sp_addlogin ,需加入使用者帐号。 (1) 首先,用SQLCONNECT()或SQLSTRINGCONNECT() 函数连接数据源。 (2) 连接成功后,即可用SQLEXEC()函数发送SQL命令至SQL Server执行。
SQLEXEC( nConnectionHandle, [cSQLCommand, [CursorName]])
= SQLSETPROP(gnConnHandle, 'asynchronous', .F.)
= SQLEXEC(gnConnHandle, 'SELECT * FROM authors', 'MyCursor')
(3) 所有操作完成后,用SQLDISCONNECT()函数切断与数据源的连接。
下面,举个典型的SQL Pass-Through例子: SET TALK OFF CLEAR ALL CLOSE ALL
SQLSETPROP(0,\ &&登录失败时不显示ODBC登录对话框
nConnectHandle=SQLSTRINGCONNECT(\
IF nConnectHandle<0
MessageBox(\无法与数据库连接\异常情况\ ELSE
MessageBox(\连接成功\提示信息\
SQLEXEC(nConnectHandle,\ Browse
Use in sqlresult
???.. &&其他操作 SQLDISCONNECT(nConnectHandle) &&切断连接
ENDIF
这样,就能对数据库进行有效操作,确保数据完整性和安全性。 下面是所有SQL Pass-Through 函数: (1) 连接建立与切断:
SQLCONNECT()
Syntax
SQLCONNECT([DataSourceName, cUserID, cPassword | cConnectionName]) SQLSTRINGCONNECT();
Syntax
SQLSTRINGCONNECT([cConnectString]) SQLDISCONNECT()
Syntax
SQLDISCONNECT(nConnectionHandle)
(2) SQL命令叙述的执行与控制:
SQLEXEC()
Syntax
SQLEXEC(nConnectionHandle, [cSQLCommand, [CursorName]]) SQLMORERESULTS()
Syntax
SQLMORERESULTS(nConnectionHandle) SQLPREPARE()
Syntax
SQLPREPARE(nConnectionHandle, cSQLCommand, [CursorName]) SQLCOMMIT()
Syntax
SQLCOMMIT(nConnectionHandle) SQLROLLBACK()
Syntax
SQLROLLBACK(nConnectionHandle) SQLCANCEL()
Syntax
SQLCANCEL(nConnectionHandle)
(3) 数据来源信息:
SQLCOLUMNS()
Syntax
SQLCOLUMNS(nConnectionHandle, TableName [, FOXPRO | NATIVE [, CursorName]] SQLTABLES()
Syntax
SQLTABLES(nConnectionHandle [, cTableTypes] [, cCursorName])
(4) 存取连接通道的属性:
SQLGETPROP()
Syntax
SQLGETPROP(nConnectionHandle, cSetting) SQLSETPROP()
Syntax
SQLSETPROP(nConnectionHandle, cSetting [, eExpression])
用SQL Pass-Through,程序设计师拥有较高的主导权与控制权,因此若能够将远程视图和SQL Pass-Through 技术紧密的结合起来,互补有无,我们的C/S系统就可以无所不能。 五.结束语
可以说,VFP是个相当不错的开发C/S结构的数据库应用系统的前端软件,在Internet 广为流传的今天,最新一代的系统结构早就已发展至N-tier 结构,亦即我们所说的多阶层结构。N-tier 结构其实是从主从结构为基础所衍生而来的,我们甚至可以说主从结构就是2-tier 结构。 参考文献:
(1)Visual Foxpro6.x 中文版程序设计 -应用实务篇 章立民 中国铁道出版社 1999.10
(2)中文Visual Foxpro6.0 高级编程 合力工作室 清华大学出版社 1999.7
几种注册ODBC数据源的方法
一、手工配置 1.ODBC数据源管理器
数据库开发,配置ODBC,进行DSN定义、注册,手工解决方法:Windows控制面板“管理工具”、“ODBC数据源”,激活ODBC数据源管理器(ODBC Data Source Administrator)。
配置ODBC时,需知道数据库名、SERVER系统(本地或远程)、等信息,同时要给数据源命名。
相关推荐: