VFPSPT论文关于VFPSPT技术开发CS应用系统论文范文参考资料_第1页
VFPSPT论文关于VFPSPT技术开发CS应用系统论文范文参考资料_第2页
VFPSPT论文关于VFPSPT技术开发CS应用系统论文范文参考资料_第3页
VFPSPT论文关于VFPSPT技术开发CS应用系统论文范文参考资料_第4页
VFPSPT论文关于VFPSPT技术开发CS应用系统论文范文参考资料_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

VFPSPT论文关于VFPSPT技术开发CS应用系统论文范文参考资料 摘要: 随着市场竞争的加剧和信息系统的深入应用,人们对信息的处理、获取、发布、存储等提出了更高的性能要求。开发多用户C/S 模式(客户端/ 服务器端)应用系统,成了我们数据库开发人员不可回避的选择。越来越多的VFP 程序开发人员倾向于用VFP 与大型数据库SQL Server 相结合,来架构自己的开发系统。前台用VFP 开发工具,后台用SQL SERVER 来管理数据,成了广大VFP 爱好者程序开发的潮流。抛开我们熟悉的数据库文件(.dbc)、表文件(.dbf), _将我们已经开发好的基于DBF 的表单,与SQL Server 整合,以适应更大型的应用本文将结合本人的实际开发经验,以及许多网友的经验,讨论VFP 程序开发中用SPT(SQL Pass Through)技术访问大型数据库SQL SERVER 的方法。 关键词:数据库开发 Visual FoxPro SQL Server SPT :TP311 :A :1003-9082 (xx) 05-0001-02 前言 Visual FoxPro 数据库开发工具(以下简称VFP)具有易于掌握、易于开发、项目管理方便灵活、拥有强大编程语言、对系统资源要求不高等特性。长期以来,VFP 以其小而巧的特点,受到中、小型数据库开发者的青睐。随着VFP 程序应用的深入,我们会发现VFP 数据库文件(.dbc)、表文件(.dbf)存在一些弊端,因为这些固有的问题,开发人员不得不去寻求更安全的开发策略,保证我们的应用程序,稳定可靠,安全无患。通常的解决办法是使用结构化查询语言服务器SQL Server,提供后台数据服务。 1.在设计VFP 表单时,改善对DBF 表的访问: 通常,FoxPro 应用程序都使用DBF 表来存储数据。对于单用户的应用DBF 表是很有效的。可以独占的打开表并绑定表的字段到表单控件(如文本框和复选框)。可以不再使用内存变量来复制数据字段以用于增加或。可以简单的把缓冲模式设为3(开放式行缓冲)以有效地把表单与数据字段分离开来,然后发出TableUpdate(.T.)以永久地修改数据,或者发出TableRevert(.T.)以忽略所发生的改变。 对于多用户的应用,只需要以共享方式(SHARED)打开所有的DBF表。 通常,在表单的数据环境里我们会加入所有的表和视图以便其自动打开。由于在表单控件创建前所有别名已经打开(具体的说表单对象在表单的Load 和Init 事件间生成),使用表单数据环境可以节省我们的开发时间。当把一个表加入表单的数据环境里,当表打开时,表的记录指针将会移动指向当前索引标识的第一个记录。 但是使用数据环境,在多用户环境下,要有效控制数据表,却不是很顺利,可能会有很多“表已打开的”的提示。 所以,要开发多用户应用系统,我们经常用自己的代码,在表单的Load 事件里打开光标和表。这样,我们可以控制得更多。而这种控制,将会让我们在以后面对更多用户时,不再措手不及。 2.建立数据字典 在表单的Load 事件里, 以上面调用OpenDBF 过程的方式来创建每一个光标,这是一种很好的方法。但是这种方法还是存在一定的隐患,虽然这种几率是非常的小。OpenDBF.PRG 打开的是物理存在的表,万一该表被误删了或损坏了,这么办相信每位程序员都会有自己的应对策略。我的方法是建一个所有临时表的备份,当打开表不成功时,用备份覆盖一下。 有一种更好的方法:可以建立一个包含所有需要创建的光标的信息的数据字典,然后调用下面讲述的CreatCursor()函数。用这种方法,虽然前期工作要多一点,但是临时表现场建立,那“表不存在”,“不是一个表”等错误提示,想出来也没人去叫它了。 为了使用SPT,程序必须建立一个服务器连接。通常使用SQLConnect()函数或SQLStringConnect()函数来建立该连接。 1.方式一:使用SQLConnect()函数建立SPT 连接 SQLConnect()使用DSN,使用“控制面板”中的“ODBC 数据源管理器”创建某个数据库的ODBC 数据资源名,即DSN,这样以后可以通过使用数据库DSN 连接具体的数据库。 “ODBC 数据源管理器”提供了三种DSN,分别为用户DSN、系统DSN和文件DSN。其中,用户DSN 会把相应的配置信息保存在Windows 的注册表中,但是只允许创建该DSN 的登录用户使用。系统DSN 同样将有关的配置信息保存在系统注册表中,但是与用户DSN 不同的是系统DSN 允许所有登录服务器的用户使用。 与上述两种数据库DSN 不同,文件DSN 把具体的配置信息保存在硬盘上的某个具体文件中。文件DSN 允许所有登录服务器的用户使用,而且即使在没有任何用户登录的情况下,也可以提供对数据库DSN 的访问支持。此外,因为文件DSN 被保存在硬盘文件里,所以可以方便地复制到其它机器中。这样,用户可以不对系统注册表进行任何改动就可直接使用在其它机器上创建的DSN。 在以上三种数据库DSN 中,建议大家选择系统DSN 或文件DSN,如果更喜欢文件DSN 的可移植性,可以通过在NT 系统下设定文件的访问权限获得较高的安全保障。 2.方式二:使用连接串SQLStringConnect()函数建立SPT 连接 StrCmd=Server=(local);Driver=SQL Server;Database=One;UserID=sa;pwd=sa; Handle = SQLStringConnect ( strCmd ) lr= SQLExec ( Handle, SELECT * FROM CUSTOMER, AllCusts ) 这将返回整个customer 表给命名为“AllCusts”的光标。 3.上面两种方法之一取回需要的数据后,用SQLDisconnect(句柄) 语句来关闭连接 SQLDisconnect( lh ) 可是,上面返回的光标并不是我们绑定于表单控件的光标,因为SQLExec () 总是创建一个新的光标,我们不能使用已经存在的光标作为SQLExec()的第三个参数。当我们在设计表单时,经常从表单数据环境的表里拖出字段到屏幕上,于是自动设置该表的这个字段为该控件的绑定数据源(ControlSource)。 该如何在不断开绑定的情况把这两者连接起来鉴于我们的经验,可以使用了一个简单的解决办法,仅以较小的性能损失用以免除大量的编程。在表单的Load 事件里,我们已按“做在前面”所说,创建好了我们需要的光标,并把表单控件梆定于它。然后,当我们用SPT 从SQL Server 返回数据给SQL 光标时,只需要简单地ZAP 本地光标并把返回的SQL 光标数据追加进来,或者直接把返回的SQL 光标数据追加到Load 事件里打开的光标,那么它不会断开表单上各控件的数据绑定。 需要注意的是返回光标字段名与Load 事件里打开的光标的字段名应该是相同的。 前面讲过SQL Server 是一个简单的机制,常用的就是4 条命令:Insert、Select、Update、Delete。 那么我们怎么用SPT 将我们的数据变化写回到SQL Server 数据库 我们可以构造Insert、Update、Delete 语句来发送数据到SQL Server。Update、Delete 语句必须包含一个或多个关键字段以唯一地标识需要更新或删除的记录。沿用前面建立SPT 连接的句柄Handle: 1.新增数据 StrCmd_1 = INSERT INTO authors (au_id, au_lname, au_fname, phone,address,; city,state,zip,contract) VALUES (999-99-9999, White, Johnson, ) StrCmd_2 = 408 496-7223,Bigge Rd, Menlo Park, CA,31002, 1) lr = SQLExec ( Handle, StrCmd_1+ StrCmd_2) IF lr0 Msg = 新增数据失败! MESSAGEBOX( Msg, 64, _VFP.Caption ) ENDIF 值得注意的是:这里要遵守对该表数据的约束,要不然,总会以失败告终。 2.修改数据 StrCmd = UPDATE authors SET phone = 999 496-7223, address =2036 shiqiaoyjl ; WHERE (au_id = 999-99-9999) AND (au_lname = White) lr = SQLExec ( Handle, StrCmd ) IF lr0 Msg = 修改数据失败! MESSAGEBOX( Msg, 64, _VFP.Caption ) ENDIF 3.删除数据 StrCmd = delete authors WHERE (au_id = 999-99-9999) AND(au_lname = White) lr = SQLExec ( Handle, StrCmd ) IF lr0 Msg = 删除数据失败! MESSAGEBOX( Msg, 64, _VFP.Caption ) ENDIF 1.用SPT 方式可以很好的使用事物处理 也许我们记忆忧新,在使用DBF 表时,是用开放式行缓冲方式,然后发出TableUpdate(.T.)以永久地修改数据,或者发出TableRevert(.T.)来忽略数据更改的。还有在用远程视图方式整合SQL Server 开发时,用的也是缓冲的机制。这种机制犹如黑匣子,我们控制不了其操作过程。用SPT 方式就不一样,用这种方式,我们可以想回滚到哪里就回滚到哪里。 2.保留选项表的本地备份 可以复制部分SQLSerever 表为DBF 表到本地应用程序目录。你也许会感到奇怪,我用了SQLSerever 表,为什么还要用DBF 表原因很简单,是因

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论