首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > VFP >

大家是怎么实现网络版的

2012-02-25 
大家是如何实现网络版的?我做的程序,是我们单位局域网上用的.第一,做成网络版,放在服务器上,各单机,用网上

大家是如何实现网络版的?
我做的程序,是我们单位局域网上用的.

第一,做成网络版,放在服务器上,各单机,用网上邻居,找到服务器,程序所在的文件夹,双击EXE文件即可.

但有个问题,就是使用者必须进登录服务器,找到文件夹.不利于安全啊?使用者可以轻松的把所有文件复制走啊.这是老板特别担心的问题.

即使在桌面上建立快捷图标,也经常失效,不知何故.

第二,做成单机版(客户端),共享服务器上的数据库,是用这种方法吗??这种方法是不是可以解决掉了?还有,能控制网络点数吗?

[解决办法]
   
在VFP中建立C/S机制
[size=3][size=4]在VFP中建立C/S机制
一、C/S的应用形式 
在应用中,人们多把C/S的应用程序分成两部分:让客户程序驻留在网络的前端工作站(一台微机)上,服务器处理程序则在网络的后台,其分布结构见图1。当客户(在工作站上)通过请求的方式提出了所需要的服务时,服务器不必关心客户程序的功能,只需响应请求就行。 
在这种结构中,服务器的硬件必须具有足够的处理能力,这样才能满足各客户的要求。 
从概念上看,“服务器”的含义非常广泛,数据库服务器只是其中的一种。数据库服务器至少应提供对数据的存取、加工、处理等服务,同时还要提供完善的安全保护及数据的完整性等处理,并允许多个客户同时访问同一个数据库。因此,客户可以不用考虑对数据的安全、优化、完整性等基础处理,只需专心自己的工作。 
客户应用程序除了向服务器提出请求外,还要分析从服务器返回的信息(包括数据和指令),并据此作一些再处理(如向操作者显示相应的数据、要求补充输入一些数据等)。 
中介(MiddleWare)是C/S系统中的一种系统软件,它负责链接客户与服务器。客户与服务器联接的最底层是网络的硬件,但对应用级的程序员来说,关心的焦点还是它们在软件上的通信链接。因为C/S的环境复杂,而且涉及多种规程及协议,所以还必须依靠中介软件才能有效地降低工作难度。中介软件能够把使用者与复杂的通信规程、硬件平台及操作系统隔开,数据通过中介在客户与服务器间流动,客户与服务器通过中介软件进行平稳互访,这种方式无疑大大降低了编程者的技术难度及工作量。 
目前已出现了很多有关中介的标准及软件,我们在VisualFoxPro上见到的就是ODBC。它处在客户与服务器之间,有效地隐蔽了C/S操作的复杂过程。 
二、设计C/S系统的基本原则 
这里只考虑客户与服务器分别在不同硬件平台上的C/S系统(即基于网络的C/S系统),它们在设计时应遵循以下原则: 
1.尽量让客户机完成针对特定用户的事务处理 
因为服务器由多个客户机共享,如果把每个用户的特定处理都放在服务器上,就会增大服务器的工作量,因而降低其响应速度,延长客户申请的等待时间,所以尽量让客户机完成针对特定用户的事务处理,目的是为了减轻服务器的负担,提高C/S系统的整体性能。 
2.尽量让服务器管理全部的共享资源 
可共享的资源包括数据、部分外设(如扫描仪、打印机等)及基础服务处理(如通信),这些都应由服务器来管理,以保证各用户都能享用。对于共享数据,由服务器集中处理还有助于保证数据的完整性、一致性和安全性。 
3.尽量减少客户与服务器间传送的数据量 
在网络间传送数据,可能产生数据错误、丢失、延时、故障等问题。数据传递得越多,产生的问题、要求恢复的可能性也就越大。而且网络上堆积了大量数据,必然会降低系统对其他客户机的反应速度,同时影响客户之间及客户与服务器间的通信(通信也是一种共享资源)。所以,减少网络中数据的传递量,有助于保证C/S系统的整体性能。 
4.坚持局部数据在局部存储和管理 
这是为了减少网络上的数据传输量、减轻服务器的压力、增强服务器对请求的响应,提高C/S系统的总体性能。 
根据上述原则,在做基于数据库的C/S系统设计时,可以把接口表示部分(如输入、输出界面)放在客户机上,把数据的管理部分(如查询、存储、更新、优化等)放在服务器上。对其他处理逻辑,则要根据具体情况进行分析,例如对于计算密集型的处理,可把计算部分放在客户机上,而有关数据特性的一般约束处理(如完整性、安全性、一致性等)则可放在服务器上。 
对于数据的分布,也应作妥善安排。对于提供给各客户共享的数据,应放在服务器上(作为远程数据来处理);而对于各自的独用数据,则应放在自己的客户机上。 
三、VisualFoxPro中建立C/S的机制 
用VisualFoxPro构造C/S系统时,用ODBC作中介软件,由ODBC完成客户与服务器间的通信。这时各应用程序都通过各自的驱动程序与数据库相联,ODBC通过自身的驱动程序管理器来管理ODBC与驱动程序间的交互,程序员则可以使用相同的程序调用来实现与不同数据源的通信。 
目前,Windows下的ODBC驱动程序和驱动程序管理器均以DDL(动态数据链接库)的形式实现。在VisualFoxPro的ODBC支持下,客户的应用程序可以实现以下功能: 
①与(远程)数据库建立或解除联接; 
②VisualFoxPro可通过当前已有的驱动程序与Oracle7.0、SQLServer、MSParadox等数据库联接。其他种类的数据库只要能提供自己的驱动程序,也能与VisualFoxPro相联; 
③对远程数据库进行常规操作(如修改、查询等),并获取相应的操作结果; 
④接收以ANSIError为标准的错误信息; 
⑤对远程数据库上的表、记录、视图、索引等进行检测; 
⑥向各用户提供统一的登录界面。 
VisualFoxPro是C/S的前端开发工具,它通过ODBC对后端数据库进行存取的方法有两类:SPT(SQLPass-Though)和RemoteViews(远程视图)。SPT提供的函数类似低级文件函数,用户可用此直接访问后端数据库。用户使用SPT时,需用一组以SQL打头的函数来编写“打开联接”、“错误检测”、“命令传递”等指令。VisualFoxPro中的视图有两种:本地和远程,操作时可一视同仁。远程视图在ViewDesigner中创建,这时需说明远程数据库中要访问或修改的“部位”及范围。当这个视图建立后,我们就可以像使用VisualFoxPro的一个局部表一样,用“日常”的VisualFoxPro命令对其操作。 
访问后端数据库时,必须先通过联接。在VisualFoxPro中,通过联接可以创建远程视图,修改其属性则可以优化各部分间的通信。VisualFoxPro中的联接有两种:隐含联接和命名联接。这里联接被当作对象来处理,以下是联接中常用的一些属性: 
属性名内容说明 
PassWord联接时用的口令 
DataSource通过ODBC所联接数据源的类型 
PacketSize确定联接时所用网络数据包的大小 
ConnectString用于联接注册的字符串 
Asynchronous确定所用联接是同步还是异步 
ConnecName建立游标时所用联接的名字 
UserID用户标识 
Shared确定联接时可否共享 
PatchMode确定批模式 
…… 
在用SPT访问后端数据库时,必须使用命名联接。 
在一般的应用中,可以将远程视图与SPT结合使用。可在本地数据库中定义后端数据源的远程视图,然后通过Form(或FormSet)对已联数据源进行日常操作。这是一种简洁、实用的C/S系统应用。 
四、用VFP实现C/S系统的基本方法 
在建立C/S系统时,实现步骤为: 
第一步,根据后端数据源的类型装入相应的ODBC驱动程序,同时做一些相应的设置。 
下面以安装SQLServer的驱动程序为例进行说明: 
DataSourceName标识数据源的名子 
Description说明存储在数据源中的数据 
Server标识网络上SQLServer的名字,目前可选的服务器有MSWindowsforworkgroups;BanyanVINES;MSLANManager;IBMLANServer或DECPathworks;TCP/IPNetworks;NovellNetWare。 
NetworkAddress说明SQLServerDBMS的网址 


NetworkLibrarySQLServer驱动程序所用的与网络通讯的动态链接库 
还有其他一些用于说明诸如数据库名、所用语言等选项的参数,需根据情况确定。设置完上述参数后,即完成了ODBC驱动程序的安装。 
第二步,进入VisualFoxPro中,建立与后端数据源的联接。 
因为联接属于数据库的一部分,所以必须先进入VisualFoxPro,创建或打开一个数据库,然后建立命名联接(用指令:CreateConnectionΙ联接的名字>),在VisualFoxPro提供的ConnectionDesigner窗口中填写一些值及属性(见上节所列),就完成了一个联接的建立。 
第三步,建立远程视图。 
因为远程视图从逻辑上说属于本地数据库的一部分,所以在建立远程视图前,必须先打开数据库(用命令:OpenDatabaseΙ数据库名>),并进入该数据库的修改状态(用命令:ModifyDatabaseΙ数据库名>)。在VisualFoxPro弹出的DatabaseDesigner窗口内的工具条中,选点NewRemoteView图标,随后VisualFoxPro会让你选择命名联接和远程数据库中的表;在你完成这些选择后,VisualFoxPro会再弹出一个ViewDesigner窗口,让你在这个窗口中进一步确定,这个表中的哪些数据项将出现在所建立的远程视图中。这些数据项将在SelectedOutput下的列表框中显示出来。 
第四步,建立应用程序。 
下面举例说明建立应用程序的方法。为了说明方便,这里把MSAccess数据库作为远程数据库(选其他数据库时的处理方法及步骤均相同),在其上建立一个名为worker的表,见右表1。 
假定我们已按上述前三步的方法装好了ODBC驱动程序, 
已打开了名为MyData的本地数据库,并建立了名为MyCon的与远程数据库的联接。 
例1.在图2窗口内,查看职工状况表。 
我们需要先在本地库上建一个远程视图。可以用上述第三步的方法,把远程视图名定为V1,此时需选择联接名为MyCon。下面是V1的描述语句: 
SELECTworker.Wrk-id,worker.Wrk-name,worker.brithday,worker.specialityFROMworker 
然后再建一个表单(Form),在上面做一个Grid型的组件(对象),把该组件的RecordSource属性值设成V1。这就完成了一个(远程)职工信息观察窗口的制作。 
例2.在图3所示的Form内,当在“职工代号”对应的文本框内输入一个代号值后,就在其他的文本框内显示这个职工的其他信息。 
可参照上例方法建立远程视图V2。其描述语句为: 
SELECTworker.Wrk-id,worker.Wrk-name,worker.Brithday,worker.specialityFROMworker; 
WHEREworker.Wrk-id=?Cinp 
然后再建一个Form,做成图3的样子,各文本框(对象)的ControlSource分别指定为V2.wrk-name、V2.brithday、V2.speciality。最后再定义与职工代号对应的文本框的Valid方法:cinp=this.Valus 
=requery("V2") 
thisform.Refersh 
例3.直接在程序中使用SPT,查看远程数据库中的职工信息: 
connection=SQLCONNECT("MSAccessDatabasese","username") 
IFconnection>0 
IFSQLEXEC(connection,"select fromtable"1,"MyCursor")>0 
brow 
ELSE 
WAITWindows"不能查看这个远程数据库!" 
ENDIF 
ELSE 
WaitWindows"无法建立联接!" 
ENDIF 
 
 

热点排行