用VisualFoxpro开发主从结构数据库系统
来源: 作者: 出处:综艺读书 2006-10-11
孙向海 方旭升
|
|
|||
一. 建立数据库、建立ODBC 数据源
主从结构最大的优点就是将工作合理分配于服务器与工作站以便让它们同时发挥所长,主从结构包括三个重要的部分-网络操作系统、数据库服务器及前端应用程序。我们可以采用Visual FoxPro+SQL Server 7.0 + Windows NT Server 的组合方式。我们首先需在SQL Server 上建立所需的数据库如:Ningguo ,并创建所需要的表,如maintable等。在SQL Server 上的数据库建完之后,我们可以为刚才创建的数据库创建一个用户如:newguest,这样我们就可以进行下一步操作。
在前台的工作站上,操作系统采用Window 98/95 即可,在工作站建立连接到SQL Server的ODBC 数据来源(Data Source)。 我们新建了一个数据源first,连接到 SQL Server 上的Ningguo 数据库。
二.建立和数据库相连的连接
下面我们就进入与Visual Foxpro 相关的部分。在以 Visual Foxpro 所开发的主从结构中,远程视图(Remote View)扮演着关键性的角色。远程视图使得程序设计师能够将现有的技术直接应用于主从结构系统的开发上,而无须增加太多的负担。当我们想要在 Visual Foxpro 中存取其他数据库系统的数据纪录时,便必须借助于远程视图。在建立一个远程视图之前,必须在数据库中建立一个连接(Connection),它记录了登入SQL Server 的相关信息并定义连接通道的一些设定信息。在数据库设计器中新建一个连接, 分别在数据源、用户标识、密码、数据库所对应的输入框中输入如前文所述的名称,然后验证连接即可,当然也可以用连接串连接,如:dsn=first;uid=newguest;pwd=123;database=ningguo,或许在某些情况下,我们在应用系统执行期间以程序控制方式更改连接的相关设定,我们就可以用DBSETPROP()函数,比如我们要更改名为connect1 的连接串,可用如下的命令叙述:
OPEN DATABASE test
dbsetprop("connect1","connection","connectstring",;
"dsn=first;uid=newguest;pwd=123;database=ningguo")
三.建立远程视图
在连接成功的情况下,我们就可以建立远程视图。我们既可以在数据库设计器中用视图向导建立视图,也可以用命令来建立视图。下面以向导为例来进行说明,在向导中我们可以使用数据源或者连接来创建视图,一般而言,让远程视图透过已定义的连接来连接到所需的数据来源较好,因为连接本身就包含较完整的连接定义信息,而用数据源则每次使用远程视图时便会出现 SQL Server Login 对话框,显然这是用户所不希望看到的。接着选择视图所对应的SQL Server 中的来源表即可。
我们就视图所需要的字段、联接条件、筛选条件、排序、分组、更新条件应分别进行设置,以满足我们的需要,要提到的是前后端的数据类型对应的问题,Visual Foxpro 中的数据类型与 SQL Server 中的数据类型不尽相同,不过前后端的数据类型有一固定的关系。比如,某一个字段在SQL Server 上的数据类型是 money ,而在远程视图中此字段的数据类型将是货币值类型,又例如,某一个字段在SQL Server 上的数据类型是 text ,而在远程视图之中此字段的数据类型将是备注型,我们往往需要手动去调节对应的字段类型,例如,所有的 SQL Server 上的datetime 类型到了远程视图中都要变成 date 型。我们可以在相应的页面来确定联接关系、指定过滤条件、指定排序依据,特别要注意的是在"更新页面"栏,如果我们想要建立一个可更新的视图,必须选中"发送SQL更新"栏,这样针对视图所作的任何变动,会主动反映到后端的SQL Server 中去,你就可以直接使用所熟悉的Visual Foxpro 来更新后端数据。另外,我们指定键值栏、可更新字段、更新冲突的检查方式以及后端的 SQL Server 如何执行更新操作,视图的建立就完成了。
远程视图一旦建立完成,我们就可以利用它来显示与更新数据。由于远程视图在外观与使用上皆与表大同小异,因此即使其来源数据实际上是位于SQL Server 中,我们无须有任何顾虑,过去替 Visual Foxpro 本身的数据建立平行输出/入界面、报表及标签的方法完全适用于远程视图。我们可以在表单设计工具、报表设计工具与标签设计工具中,将远程视图加至表单、报表或标签的数据环境组件中,并快速建立出数据源为远程视图或其某字段的控制项。但是在实际应用中,我们往往会遇到这样的情况,如符合条件的数据纪录很多,或者经常要使用离线方式的系统,我们除了简单的使用远程视图之外,还必须灵活的运用"有条件的远程视图"和离线式视图(Off-line View),尽量减少服务器端的数据下载量,减轻网络的负荷,一些不常更新的数据甚至可以以DBF的形式直接放置在客户端,提高整个系统的运行效率。
四.SQL Pass-Through (SPT) 技术的运用
要使一个主从结构系统趋于完善,除了用远程视图来构筑主从结构的主体,还必须辅以SQL Pass-Through 技术。所谓 SQL Pass-Through ,意指我们可以将任何符合 SQL Server 语法的命令叙述从前端透过连接通道送至后端的 SQL Server 来执行,与SQL Server 进行其他直接有效的沟通。利用 SQL Pass-Through 我们还可以直接去执行储存在SQL Server 上的储存式程序(Stored Procedure),和系统储存式程序(System Stored Procedure),比方说,我们可以从前端去执行SQL Server的系统储存式程序sp_addlogin ,来要求加入一个使用者帐号。一般而言,SPT函数的使用流程如下所示:
(1) 首先使用SQLCONNECT()或SQLSTRINGCONNECT() 函数来连接值所需的数据源。
(2) 成功的连接到SQL Server 之后,即可以透过连接通道进行所需的各项处理。比如,我
们可以使用SQLEXEC()函数将SQL命令送至SQL Server执行。
(3) 完成所有的操作后,应用SQLDISCONNECT()函数切断与数据源的连接。下面我们就
举一个典型的运用SQL Pass-Through的例子:
SET TALK OFF
CLEAR ALL
CLOSE ALL
SQLSETPROP(0,"DispLogin",3) &&登录失败时不显示ODBC登录对话框
nConnectHandle=SQLSTRINGCONNECT("dsn=first;uid=newguest;pwd=123;database=ningguo")
IF nConnectHandle<0
MessageBox("无法与数据库连接",0+48,"异常情况")
ELSE
MessageBox("连接成功",0+48,"提示信息")
SQLEXEC(nConnectHandle,"Select * from maintable")
Browse
Use in sqlresult
………..&&其他操作
SQLDISCONNECT(nConnectHandle) &&切断连接
ENDIF
通过这样简单有效的代码,我们就能对数据库进行有效的操作,以确保数据的完整性和安全性。在此列出所有的SQL Pass-Through 函数供大家参考:
(1) 连接建立与切断 SQLCONNECT() SQLSTRINGCONNECT() SQLDISCONNECT()
(2) SQL命令叙述的执行与控制 SQLCANCEL() SQLEXEC() SQLMORERESULTS() SQLPREPARE() SQLCOMMIT() SQLROLLBACK()
(3) 数据来源信息 SQLCOLUMNS() SQLTABLES()
(4) 存取连接通道的属性 SQLGETPROP() SQLSETPROP()
在用SQL Pass-Through时,程序设计师能够拥有较高的主导权与控制权,因此若能够将远程视图和SQL Pass-Through 技术紧密的结合起来,互补有无,我们的主从系统就可以无所不能了。
五.结束语
可以说,Visual Foxpro 是一个相当不错的开发基于C/S结构的数据库应用系统的前端软件,在Internet 广为流传的今天,最新一代的系统结构早就已发展至N-tier 结构,亦即我们所说的多阶层结构。N-tier 结构其实是从主从结构为基础所衍生而来的,我们甚至可以说主从结构就是2-tier 结构。因此,只有彻底学会主从结构,并了解Visual Foxpro 在主从结构中所扮演的角色,才能在将来的竞争中立于不败之地。
参考文献:
(1)Visual Foxpro6.x 中文版程序设计 -应用实务篇 章立民 中国铁道出版社 1999.10
(2)中文Visual Foxpro6.0 高级编程 合力工作室 清华大学出版社 1999.7
相关图文阅读
频道图文推荐
相关专题
·系统优化大全 (13909篇文章)
·系统安全设置 (18705篇文章)
·系统安装手册 (16385篇文章)
·系统备份专题 (13518篇文章)
·系统维护手册 (13057篇文章)
·数据库专栏 (4469篇文章)
·数据库处理专题 (7214篇文章)
·城域网专题 (6668篇文章)
·数据库安全技术专题 (11215篇文章)
·数据库安装与卸载 (8929篇文章)
·系统安全设置 (18705篇文章)
·系统安装手册 (16385篇文章)
·系统备份专题 (13518篇文章)
·系统维护手册 (13057篇文章)
·数据库专栏 (4469篇文章)
·数据库处理专题 (7214篇文章)
·城域网专题 (6668篇文章)
·数据库安全技术专题 (11215篇文章)
·数据库安装与卸载 (8929篇文章)
最新技术文档
·用FoxWeb在网上快速发布你的FOXPRO数据库 11-03
·用Foxpro制作Windows输入法码表 11-03
·用FoxPro生成HTML文件 11-03
·下载和上载远程视图数据 10-30
·为Visual FoxPro应用程序增加文件压缩功能 10-30
·为VFP添加循环微调控件类 10-30
·为FoxPro中的弹出式菜单增加自学习功能 10-30
·通过编程运行拨号网络连接 10-29
·谈谈在基于Foxpro的MIS中实现提示、帮助与询问 10-29
·谈谈VFP和SQL SERVER搭配做C/S系统 10-29
·用Foxpro制作Windows输入法码表 11-03
·用FoxPro生成HTML文件 11-03
·下载和上载远程视图数据 10-30
·为Visual FoxPro应用程序增加文件压缩功能 10-30
·为VFP添加循环微调控件类 10-30
·为FoxPro中的弹出式菜单增加自学习功能 10-30
·通过编程运行拨号网络连接 10-29
·谈谈在基于Foxpro的MIS中实现提示、帮助与询问 10-29
·谈谈VFP和SQL SERVER搭配做C/S系统 10-29
站内各频道最新更新文档
站内最新制作专题
|
|||
| ·ACDSEE专题教程-下载使用 ·迅雷专题教程-下载使用 ·Windows XP频道 ·Windows Vista频道 ·Windows 2000频道 ·win2003频道 ·Freebsd频道 ·Oracle频道 |
·Linux频道 ·Windows频道 ·邮件服务器专题 ·协议大全 ·数据恢复指南教程 ·FreeBSD使用教程 ·Linux数据库宝典 ·Linux基础知识 |
||
热门关键字导读
站内频道文章精选
| · 秘密:Vista隐蔽的动态屏保 · 腾讯开发新电子宠物--QQ熊 · 惠普否认2999元PC有价无货 |
· 驱逐Win系统“流氓”文件 · WinXP中获取未使用的IP地址 · 尝试format C:格式化硬盘? |
| · 在DOS下恢复回收站中的文件 · 拯救WinXP崩溃的救命稻草 · Linux系统中超级权限的应用 |
· 搜狗PK谷歌:谁能代言拼... · 昨日重现,一键GHOST轻松.. · 实现Web迅雷在空闲时杀毒 |
| · AVIFile函数制做AVI文件 · VC中链接动态链接库的方法 · 熊猫烧香核心源码(Delphi) |
· DateDiff函数祥解 · JavaScript去除空格的三种 · js效果 图片加载进度实时.. |
| · SQL Server数据库优化方案 · Oracle的初学者入门心得 · JSP连接Mysql数据库 |
· Photoshop为美女做艺术处理 · 用Freehand创建发光字特效 · 设计自己的个性QQ动态表情 |
百度推荐,商机无限
搜索您感兴趣的内容




