VFP和SQL,第1张

VFP和SQL,第2张

1.CLIENT/SERVER? C/S属于2层体系,适用于中小型应用系统。大型系统通常使用三层架构。
例如,一个独立的数据库系统(如VFP)相当于一个前台存储和一个后台存储。如果你需要店里的东西,你得去仓库,自己管理仓库。在C/S系统下,商店和仓库相对独立,有专门的仓库管理(数据服务器)。如果你需要店里的东西,按照程序把单子交给仓库经理。

因此,我们可以看到C/S的优势:支持多用户;更有效的数据管理,更安全、更可靠的数据;远程使用数据。
如果你是单机,当然没必要用C/S。

如果VFP本身作为C/S系统使用,效果并不明显,因为VFP的数据管理功能不是很强。比如锁定和解锁都需要程序来操作。我主要讲一下VFP/SQL SERVER系统。

2.SQL SERVER
SQL SERVER是微软、ORACLE、INFOMIX、POWERBUILD发布的RDBMS(关系数据库管理系统),都是类似的系统。它们相当于仓库管理系统,但其功能不仅仅是数据管理。微软的数据库产品按功能和规模降序排列为:ACCESS、VFP、SQL SERVER。

稍微大一点的系统,SQL SERVER,需要有人来管理。这是DBA(数据库管理员)的职位。现在在北美人才市场,DBA的工作比程序员更好找。工资比普通程序员略高,工作稳定性更强。

SQL SERVER是一个大型的软件系统,可以安装在专用的NT数据服务器上,也可以在WIN95/98上安装个人版,主要是为了方便我们程序员。其功能如下:数据库管理和维护、用户/安全管理、数据发布/转换。

3.使用VFP/SQL SERVER作为C/S系统
VFP和SQL SERVER的匹配应该是完美的,但由于VB是微软的主流产品(VB一直是微软的,FOXPRO是后来买的,后妈生的),微软一直没有大力推荐或宣传过VFP。相反,它将VFP独特的数据库技术集成到自己的其他产品中:SQL SERVER、ODBC、OLE DB/ADO。最近,VFP甚至被从VISUAL STUDIO中分离出来。
VFP与SQL SERVER的通信,可以通过三种方式来完成:
A .远程查看B. ADO控件C. SPT (SQL Pass Through)
三种方式各有利弊,我最喜欢第三种。远程视图和ADO都在VFP和SQL SERVER之间增加了一层,相当于一个黑匣子。你不知道他们具体是怎么操作数据的,只是按照他们的规则设置,使用相应的命令
。反正作为一个程序员,我喜欢清楚的知道自己的程序每一步在做什么,所以我喜欢用SPT,从来不用向导来构建表单和报表。

SPT技术是通过VFP的函数SQLCONNECT()与SQL SERVER建立连接,然后利用SQLEXEC()函数将需要执行的SQL命令发送给SQL SERVER执行。
所有的数据操作都是通过这些SQL命令进行的。每个细节都由你自己的代码控制。

4.升级VFP数据
VFP的数据库可以用VFP自己的推广向导直接转移到SQL SERVER上,但是必须把所有的表都放到数据库里。自由表不能直接提升,实际上只提升表。数据库本身无法传输到SQL SERVER。感觉怪怪的。可能是为了升级索引或者关系。
要将VFP数据升级到SQL SERVER,首先必须在SQL SERVER中建立相应的数据库。SQL SERVER的管理是通过企业管理器(EM)执行的。通过它可以建立数据库,每个数据库可以包含数据表、用户/用户组、视图、存储过程等。
至于SQL SERVER的使用,原来的VFP程序肯定是要修改的,而且是很大的改动。

浅谈VFP与SQL SERVER的C/S系统(二)——动态设置ODBC连接
1。设置ODBC数据源
VFP和SQL SERVER之间的连接是通过ODBC或OLE DB(ADO)完成的。你可以打开控制面板的ODBC数据源来设置它。但是,很多情况下,我们希望在程序中动态设置数据源。首先,我们不必为每个用户的机器手动设置它。第二,为了数据安全,我们希望在使用后删除ODBC数据源。
下面的示例使用API函数来设置和删除ODBC数据源。
函数名为SQLConfigDataSource,其中第二个参数是数字(1- add 2- modify 3- delete)
声明整数SQLConfigDataSource in odbccp 32 integer,integer,string,String
LN Window Handle = 0
LCODBCDriver = ' SQL Server ' & & driver type
LCODBCName = ' Shared Data ' & & Data source name
Lcodesc = ' Shared Data source ' & & amp
lreturn = SQLConfigDataSource(lnwindow handle,2,lcODBCDriver,;
′DSN =′+lcODBCName+CHR(0);
+' Description = '+lcODBCDesc+CHR(0);
+′Server =′+lcODBCServer+CHR(0);
+' database = '+lcodbdatabase+chr(0)]
如果l return = 0&&不存在。

* *添加新的odbc
l return = sqlconfigdatasource(ln window handle,1,lcodbdriver,;
′DSN =′+lcODBCName+CHR(0);
+' Description = '+lcODBCDesc+CHR(0);
+′Server =′+lcODBCServer+CHR(0);
+' database = '+lco DBC database+CHR(0)]
if l return = 0 & & fail
MessageBox('添加ODBC数据源失败',16,' buffer')
Endif

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » VFP和SQL

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情