谈谈VFP和SQLSERVER搭配做CS系统

谈谈VFP和SQLSERVER搭配做CS系统,第1张

谈谈VFP和SQLSERVER搭配做CS系统,第2张

1.CLIENT/SERVER?到底是什么

C/S属于2层体系,适用于中小型应用系统。大型系统通常使用三层架构。

例如,一个独立的数据库系统(如VFP)相当于一个前台存储和一个后台存储。如果你需要店里的东西,你得去仓库,自己管理仓库。在C/S系统下,商店和仓库相对独立,有专门的仓库管理(数据服务器)。如果你在店里需要什么东西,按照流程交给
仓库经理,他们会操作。

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

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

2.数据库

SQL SERVER是微软发布的RDBMS(关系数据库管理系统),ORACLE,INFOMIX,POWERBUILD,都是类似的系统。它们相当于仓库管理系统,但其功能不仅仅是数据管理。微软的数据库产品从功能到规模降序排列为: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,而是将其独有的数据库技术融入到其他产品中:SQL SERVER、ODBC、OLE DB/ADO。最近,就连VFP也从VISUAL STUDIO中独立出来了。

VFP与SQL SERVER的通信可以通过三种方式进行:
A .远程查看B. ADO控件C. SPT (SQL穿越)

三种方法各有利弊,我更喜欢第三种。远程视图和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的C/S系统和SQL SERVER(二)——动态设置ODBC连接

1。设置ODBC数据源

VFP和SQL SERVER之间的连接是通过ODBC或OLE DB(ADO)实现的。你可以打开控制面板的ODBC数据源来设置它。但是,在很多情况下,我们希望在程序中动态设置数据源。首先,我们不需要为每个用户的机器手动设置它。第二,为了数据安全,我们希望在使用后删除ODBC数据源。

以下示例使用API函数来设置和删除ODBC数据源。
函数名为SQLConfigDataSource,其中第二个参数是一个数字(1- add 2- modify 3- delete)。

在odbccp32中声明整数SQLConfigDataSource INTEGER,INTEGER,STRING,STRING

window handle = 0
lcodbdriver = ' SQL Server ' & & driver type
lcodbname = ' shared data ' & & data source Name
lcodbdesc = ' shared data source ' & & data source description
LCODBC Server = ' devsql ' & & SQL Server Name
LCODBC Database = ' shared ' & &要连接的数据库的名称

* *首先尝试修改已有的ODBC,如果不存在,返回0。
lreturn = SQLConfigDataSource(lnwindow handle,2,lcODBCDriver,;
' DSN = '+lcODBCName+CHR(0);
+' Description = '+lcODBCDesc+CHR(0);
+' Server = '+lcODBCServer+CHR(0);
+' database = '+lcodbdatabase+CHR(0)]
如果lreturn = 0&&不存在

**添加新的ODBC
lre turn = sqlconfigdatasource(ln window handle,1,1
' DSN = '+lcODBCName+CHR(0);
+' Description = '+lcODBCDesc+CHR(0);
+' Server = '+lcODBCServer+CHR(0);
+' database = '+lcodbdatabase+chr(0)]
if l return = 0 & & failed
MessageBox('添加ODBC数据源失败',16,' buffer')
Endif
。删除ODBC数据源

**使用后,可以在窗体DESTROY事件中删除ODBC。如果不想重复设置参数,可以将这些参数作为属性添加到表单中。

在odbccp32中声明整数SQLConfigDataSource INTEGER,INTEGER,STRING,STRING

lnwindow handle = 0
lcODBCDriver = ' SQL Server '
lcODBCName = ' Shared Data '
lcODBCDesc = '共享数据源'
lcODBCServer = ' DEVSQL '
lcODBCDatabase = ' Shared '

* *先修改,或者是否存在
l return = sqlconfigdatasource(ln window handle,;
2,lcODBCDriver,;
' DSN = '+lcODBCName+CHR(0);
+' Description = '+lcODBCDesc+CHR(0);
+' Server = '+lcODBCServer+CHR(0);
+' database = '+lcodbdatabase+chr(0)]
如果lreturn = 1&& odbc存在,则删除它
lre turn = sqlconfigdatasource(ln window handle,;
3,lcODBCDriver,;
' DSN = '+lcODBCName+CHR(0);
+' Description = '+lcODBCDesc+CHR(0);
+' Server = '+lcODBCServer+CHR(0);
+' database = '+lcodbdatabase+chr(0))
if lreturn = 0
messagebox('删除ODBC源失败,16,' buffer')
endif
endif

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

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情