用VFP与SQL SERVER构建cs数据库应用系统
用vfp与sql server构建Client1
用vfp与sql server构建Client/Server应用程序(远程视图)(1)时间:2007-05-09本文是《用 Visual FoxPro 与 SQL Server 构建 Client/Server 应用程序》系列的一部分,照例“远程视图”应不是开篇章节,但我们发现:在我们为网站准备的文章中有太多的理论性的东西,为了缓解这一矛盾,我们决定把“远程视图”提上来先写。
当下最流行的 ADO 脱胎于 Visual FoxPro,在实际使用中两者各有特色,所以不要小看 Visual FoxPro 在远程数据处理上的能力,它绝对强大!读者可以参看本站的《Microsoft Visual FoxPro 开发人员 ADO 快速入门》与《Visual FoxPro 漫谈》。
我们希望通过连载的形式完成《用 Visual FoxPro 与 SQL Server 构建Client/Server 应用程序》一文,非常希望得到您宝贵的建议。
说在前面由于本文是在两天之内赶出来的,构思不够严密,我在选择 SQL Server 端数据库时犯了一个错误:Northwind 数据库中绝大多数“字符串”型字段(列)使用了 nVarchar 型,Visual FoxPro 对此支持的不好(具体原因本站将另文论述)。
以上可能造成演示程序不能正常工作,对此我们可以在 SQL Server 的Enterprise Manager 中把有关字段的的类型从 nVarchar 改为 Varchar。
我建议把 Customers 表中的 CustomerID 和 Phone字段的类型变化即可。
同样的,我们可以把 Employees 的 Notes 字段类型变为 text。
不是我的错Visual FoxPro 的视图设计器虽然能完成许多烦人的远程视图的操作,但对于特别复杂的远程视图可能会支持很差。
在阅读本文做实验时,遇到以上问题请不要责怪作者。
用vfp与sql_server连接
用vfp与sql server构建Client/Server应用程序(远程视图)(1)前言Visual FoxPro 为 Client/Server构架的应用提供了两个内置的解决方案:远程视图(Remote Views)与 SPT(SQL pas s through)。
当然在Visual FoxPro中我们可以使用其它的远程数据连接的方法,比如 ADO。
所有这些解决方案都各有优劣,远程视图最大的好处就是它可以非常方便地与Visual FoxPro内置控件绑定。
每一个远程视图就是一个存储于Visual FoxPro数据库容器(DBC)的对象,是一句SQL-SELECT语句。
远程视图通过ODBC(Open Database Connectiv ity)与异构数据库通讯。
虽然本文的实例使用SQL Server 作为后端数据库,但大家同样可以使用其它数据源作为后端数据库,例如 Oracle,I BM DB2,Informix,Sybase,Microsoft Access,Excel,甚至是Visual FoxPro自己。
使用远程视图操作远程数据就像操作Visual FoxPro本地数据一般,以下我们将介绍这一伟大工具的初级应用。
连接-Connections使用远程视图操作远程数据的第一步就是建立与远程数据源的通讯,这里有好几种方法可供选择,请注意所有这些方法都使用 ODBC 与远程数据连接。
这里有一个非常简单的远程视图,它的作用是:读取 Northwind 数据库中 Customers 表的记录到远程视图 Vcustome rs 中。
CREATE SQL VIEW Vcustomers ;REMOTE CONNECTION Northwind ;AS SELECT * From Customers*先别试用这条语句,因为连接还没有建立在上述命令的第二行我们告诉Visual FoxPro使用连接 Northwind 与 SQL Server 通讯。
VFP开发Server Client系统
用VFP开发C/S系统开发C/S 模式系统,常用DELPHI、VB、PB等数据库开发平台。
其实,用VFP开发C/S系统完全适用。
一. 建立数据库、建立ODBC 数据源C/S 模式(主从结构)最大优点:将工作合理分配于Server与Client,以便让它们同时发挥所长。
C/S结构包括三部分-网络操作系统、数据库服务器及前端应用程序。
我们可用VFP + SQL Server + Windows Server组合方式。
首先,在SQL Server上建立数据库,如:Ningguo ,并创建表,如maintable等,同时,创建一个SQL Server数据库用户如:newguest。
在前台的Clien t上,建立连接到SQL Server的ODBC 数据源(Data Source),如新建数据源first,连接到 SQL Server 上的数据库Ningguo。
二.建立和数据库相连的连接进入VFP。
在VFP开发C/S结构中,远程视图(Remote View)扮演关键角色。
建立远程视图前,须在数据库中建立一个连接(Connection),它记录着登入SQL Server 的相关信息:数据源、用户、密码、数据库名称等,然后,验证连接。
当然,也可用函数建立连接,如:connect1=SQLSTRINGCONNECT("dsn=first;uid=newguest;pwd=123;database=ningguo")connect2=SQLSTRINGCONNECT("DSN=FS3001;Description=FS3001;UID=morningstar;PWD=960306;DATABASE=master;LANGUAGE=简体中文")在某些情况下,程序执行期间,如需更改连接的属性设定,可用DBSETPROP()函数,DBSETPROP()函数,用于更改当前数据库、连接、表、视图、字段的属性。
visual forpro 与 SQL Server建立连接方法
----建立ODBC数据源(DSN)摘要:本文主要讲解VFP到SQL Server的连接以及连接中应该注意的问题和错误的解决方法这里所指的连接关系(connection)指的是当VFP通过界面卡、SQL Server 的网络架构、传输媒介、通讯协议等复杂的作业组合后而连线到SQL Server的流程总称。
安全措施相信大家都了解数据的机密性和重要性,所以您最好采取一些安全防护措施来保护它不被非法存取和蓄意破坏。
事前做好万全的准备总比事后的懊悔好。
至于设定和维护资料的安全性是系统管理员(Administrator)的职责。
假如您的应用程序是C/S结构,那么程序的使用者都必须先通过身份验证以获得存取资料的权限,亦即使用者可利用在SQL中设定的使用者名称和密码,或直接用Windows NT 目录资料库中的使用者名称和密码来存取SQL资料库。
(这种做法请与SQL系统管理员联系)。
输入用户名称和密码的一般做法假如您的程序需要输入用户名称和密码的话,一般的做法是在屏幕上显示一个对话框让用户输入。
在VFP中有一个TEXTBox 控件非常适合来担任这个工作,它有一个passchar属性,可以让开发者设计要以什么字符来遮没(通常是*,关于加密的程序以及算法可以参考VFP 编程技巧)用户输入的密码。
建立ODBC数据源(DSN)ODBC数据源(Data Source Name : DSN)即是ODBC驱动程序的唯一识别名称,DSN可以包含空白的字符,如“FAVOR CAI”由控制面板的32BIt Odbc 图标,可以进入ODBC数据管理器,如果没有 32BIt Odbc 图标,请先安装ODBC驱动程序。
用户DSN是用户用来存贮与数据库的连接信息,用户数据源只对用户可见而且只能用于当前机器上。
系统DSN是用来存贮与数据库的连接信息,当前计算机上的所有用户都可以使用系统数据源。
文件DSN是用来存贮与数据库的连接信息,可以由安装了相同驱动程序的用户共享。
用vfp与sql server构建ClientServer应用程序(SPT)(1)
用vfp与sql server构建Client/Server应用程序(SPT)(1)时间:2007-05-09一些题外话最近有一种好的现象——越来越多的Visual FoxPro用户开始注意到Client/Server应用程序的重要性,他们开始安装SQL Server了。
作为开发人员,我们没有必要深入认识SQL Server的种种(我个人以为那是数据库管理员-DBA的事情),我们要解决的是怎样使Visual FoxPro与SQL Server在一起顺利的运行,怎样发挥两者的优越特性。
“远程视图”一章已经涉及到了许多深层次的问题,但遗憾的是(可能是文章太过枯燥)很少有人关注它!笔者到现在还是认为,“远程视图”一文绝对是目前网络上能得到的最好的简体中文学习资料,没有哪篇文章会为你深入介绍“更新冲突发生的原理”,没有哪篇文章会为你讲解“Visual FoxPro发送更新到SQL Server 的原理”,没有哪篇文章会为你讲解“各种连接属性的意义”……在国内众多Visual FoxPro图书中,我最喜欢的作者是台湾的章立民先生。
我个人以为Visual FoxPro的章立民、Delphi的李维、Visual Basic的王国荣是那种多数读者看到是他们写的作品就应该买的那类作者。
三位大家的书我都有拜读,窃以为:文采最棒的是章立民先生,名气最小的也是章立民先生(也许是因为Visual FoxPro的关系)。
中国铁道出版社为国内的Visual FoxPro事业做了一件好事——在99年前后出版了章立民先生的四册图书,分别是:《Visual FoxPro 6.X 中文版程序设计--教学指南》、《Visual FoxPro 6.X 中文版程序设计--基础加强》、《Visual FoxPro 6.X 中文版程序设计--问题集》、《Visual Foxpro 6.X 中文版程序设计--应用实务》。
除了教学指南外,其余三本都是进阶应用的好书,但很奇怪的是他们在市场上销售的并不理想,直到今年上半年在上海书市中还能觅到,相反的一些粗制滥造的东西却是卖得火爆,真是咄咄怪事!我不认识章立民先生,与中国铁道出版社更无关系,但我愿意为他们做广告,如果章立民能为Visual FoxPro 7写出更好的东西,我们将感激不尽,也希望国内出版社积极参与引进!本文在写作上参考了《Visual Foxpro 6.X 中文版程序设计--应用实务》的内容,但绝对不是抄袭,大家有兴趣可以买一本读上一读。
[VIP专享]手把手教你学vfp+sql的cs系统
手把手教你学vfp+sql2000的c/s系统一、基本准备1、安装SQL个人版+SP4;2、安装VFP9+SP1+汉化。
(看自己中意汉化否)3、会做一点单机版的项目。
二、准备实施1、启动SQL企业管理器,选择当前服务器,新建一数据库,命名cj,在该库下建一表,字段为字段名类型宽度编号 C 6姓名 C 8职务 C 10股室 C 10电话 C 11将编号设为主键,保存,命名为人员表;三、实施过程1、新建一项目,名自己定。
2、新建一程序,用来连接服务器,并将服务器上的数据下载到客户端。
(因为用到的表比较小,可以整个下载下来,如果表比较大,最好是有选择地下载需要用到的记录)程序思路如下:先定义一个连接串nhandle,并使用用户名密码连接相应的数据库,测试连接是否成功。
如果成功,则下载表到本地临时表(好象是视图?弄不明白,先当它是表),命名为gh,如果不成功,则提示连接失败,并提示再次连接否。
连接成功并下载好表后,设置表与服务器表的相应更新。
(此设置可以为另一种形式,等做好这种形式后可试试另一种)程序如下:public nhandle &&&定义连接串名nhandle=sqlstringconnect("driver=sql server;server=cjc1010; uid=sa;pwd=aa;database=cj") &&&我的连接类型是 SQL SERVER,服务器是cjc1010,用户名是sa,密码是aa,数据库是cjif nhandle>0MESSAGEBOX('连接成功!!!')sqlexec(nhandle,"select 编号,姓名,职务,股室,电话 from 人员表 order by 编号","gh") &&将服务器中的‘人员表’表中的数据读到gh 表中sele ghcursorsetprop("tables","人员表","gh") &&设置临时表的更新目标表cursorsetprop("keyfieldlist",'编号',"gh") &&设置临时表的关键字cursorsetprop("updatablefieldlist","编号,姓名,职务,股室,电话","gh")&&设置临时表的更新字段cursorsetprop("updatenamelist","编号人员表.编号,姓名人员表.姓名,职务人员表.职务,股室人员表.股室,电话人员表.电话","gh") &&&用gh中的相应字段更新人员表cursorsetprop("sendupdates",.t.,"gh")&&设置为可更新cursorsetprop("wheretype",2)cursorsetprop("buffering",5)&&设置表缓冲* do form 表单1elseif messagebox("数据库连接失败,是否继续连接?",48+4,"连接失败提示")=6 &&回答"是"returnelsequitendifendif3、建一表单,用来操作下载到本地的临时表gh并更新服务器表。
在VFP里来操作和管理SQL-SERVER
⽤VFP和SQL SERVER来做系统的友越来越多。
怎么从VFP⾥来操作或者管理SQL SERVER也成为很多⼈关⼼的问题。
对SQL SERVER的数据操作,可以⽤视图,SPT或者ADO来做,但对服务器本⾝的管理,似乎只有⽤SPT来发送⼀些命令了。
其实,微软为客户端操作SQL SERVER开发了⼀套完整的⼯具,这就是SQL - DMO (Distributed Management Objects).这是⼀套COM组件,可以在各种语⾔⾥使⽤, VFP⾥⾃然也可以⽤了。
我准备花点时间,写些这⽅⾯的介绍⽂章,然后做个实例,算是我通过MCDBA后,给⼤家的礼物吧。
下⾯的介绍和例⼦,是针对SQL SERVER 2000和VFP7的。
⼀. ⽤SQL -DMO的必要性 ⼤部分VFPER开发的程序,都是中⼩规模的系统,因为这是VFP最适⽤的范围。
⽽这样的系统,很多情况下是,客户端没有专业IT⼈⼠维护,更不要说专门的DBA了。
对于使⽤SQL SERVER的系统,就带来了⼀些问题。
SQL SERVER是⼀套⽐较⼤的数据库专业软件,是经常需要维护和清理的,⽽我们这些系统开发者,总不能⽼跑去⽤户那⾥做维护⼯作吧,尤其对商业软件来说,这是很⼤的成本了。
如果可以把对SQL SERVER的维护⼯作放到⾃⼰的程序⾥,甚⾄把SQL SERVER的安装⽆缝并⼊到⾃⼰的程序的安装包⾥,相信⼤家都会很乐意的。
DMO的功能就能满⾜我们的这些需要。
通过它,可以从程序⾥⽤命令⽅式来操作SQL SERVER:停⽌/启动服务,建⽴数据库和表,添加⽤户和权限,备份/恢复数据库,数据导⼊/导出/发布... DMO的作⽤就是把我们能在Enterprise Manager⾥完成的功能,完全⽤代码来做. ⼆. 微软的桌⾯数据引擎 (Desktop Database Engine) 我们都知道SQL SERVER 2000有四个版本: 个⼈版,开发者版,标准班和企业版. 其实,还有⼀个版本,就是桌⾯数据引擎(DDE)。
VFP+SQL SERVER实例讲解8
VFP+SQL SERVER实例讲解8[日期:2007-06-21] 来源:作者:[字体:大中小] >*第100条记录已经下载,所以VOrder不下载任何数据,但依然霸占连接go 105*第105条记录还没有下载到客户端,所以VOrder下载5条数据以满足用户的需要,但依然霸占连接go bottom*下载所有记录,释放连接MaxRecords 即:要提取的最大记录数这个属性是指远程视图光标最多可以下载的记录数,并且它的优先级比上两个属性高。
也就是说无论上两个属性怎样设置,客户端就只能拥有小于等于MaxRecords条从远端下载的记录,并且达到这个数量后,“霸占”连接就被释放、可以供其它视图使用。
这个属性可以这样设定:DBSETPROP("ViewName", "View", "MaxRecords", 25)FetchMemo 即:取备注字段如果远程视图中包含备注字段,一般认为:一次性下载这些数据到客户端是很没有意义的、也是没有效率的,而且猛增了网络流量。
比较好的做法是:用的时候才下载。
所谓用的时候就是指:明显或隐含的Modi Memo命令。
可以这样设置它的属性:DBSETPROP("ViewName", "view", "FetchMemo", .F.)CompareMemo 即:在 Where 子句中包含备注字段当远程视图包含备注字段或是通用字段时,这个属性非常重要的。
这个属性的默认值是.T.,即在检测更新冲突时把这两种字段与其它类型的字段同等看待。
笔者认为,这种设置有一个不合理、一个错误,请听我道来:先说错误,当一个通用型(不包括“备注型字段”)字段被设定为可更新,并使用了“关键字与可更新字段”或“关键字与已更新字段”的更新冲突检测方式,Visual foxpro不允许这种设定。
谈谈VFP与SQL Server搭配做C/S系统的系统初始化问题
文 献 标 识 码 :A 文 章 编 号 : 10 — 3 52 0 )0 5 — 2 0 6 6 6 (0 8一 17 0
关 键 词 : V P S ev rCS 系统 F ; QLS re; / 中 图 分 类 号 : T 3 112 P 1 3
用于勾选“ 使用信任连接” 的复 选框 名为 Tut 。 rs d e
以创建局域 网通讯 的数据库 T n XL 假定该 数据库包含两个 表 : b o og ( P o k和 x d ) x m 为例 , 来看 看初始 化按钮的 Clk i c 事件代 码。
思路 :首先通过 信任连接或利用 S A用户连 接到 S ev r QLS re 的系统数据库 matr s ,通 过 ssaaae 三表判断要创 e y dtbss
需要完成两 件工作 : 是数据库的创建 ;二是客 户端 登陆用户 的创 建与授权 。这 与以 V P本身数据库存储数据的系统是 一 F 有 区别 的,后者通 常是 没有什 么初始化工作要做 的 ,数据库 ( )由程序员事先建好 ( 表 当然 也可以在初次运行时动态创
建) ,发布时与应用程序共 同发布 ;C S系统由于数据库位 于 S 服 务器上 ,必须得 到授权 的用户才能创建 ,所 以无法 / QL
越来越 多的 V P( i a F x r 程 序员将他们 的数 据库 移植到 S ev r 了,利用 S LS re 强大 的数据库 管 F V s l o Po) u QLS re 上 Q ev r 理能力 ,加 上 V P便捷快速的数据处理 能力 ,可 以方便地构建 出客户端/艮 F 月 务器模式 的应 用系统 ( C S系统 ) 即 / 。 在一个 完整的 VF + Q ev r C S系统 中,有 哪些工作是需要 在初始化 时完成 的呢 ?一般来说 ,系统初始化时 P S LS re 的 /
VFP+SQL SERVER实例讲解2
VFP+SQL SERVER实例讲解2[日期:2007-06-21] 来源:作者:[字体:大中小]CREATE CONNECTION Northwind2 ;CONNSTRING "DRIVER=sql;UID=sa;DATABASE=Northwind;SERVER=(local);PWD=" 通过工具建立连接以上我们都是通过命令的方式建立连接,现在我们将使用Visual foxpro提供的连接设计器建立连接。
上文我们讲到:连接对象分为两类:“基于 DSN 的连接对象”和“基于字符串的连接对象”。
图5:在连接设计器中选择“数据源、用户标识、密码”就说明在建立“基于 DSN 的连接对象”,在“数据源”列表框中可选择当前可用的用户型、系统型 DSN。
在连接设计器中选择“连接串”就说明在建立“基于字符串的连接对象”,为了快速、正确的设计连接字符串,我们可以打开文件型 DSN 参考,注意:“基于字符串的连接对象”不依赖文件型 DSN。
图 5. 连接设计器连接属性的设定从连接设计器的画面上我们可以发现很多连接属性,他们代表什么意思呢?在讲述这些问题之前,我想告诉大家:所有这些属性的设定都可以通过DBSETPROP()函数,所有这些属性值的获取都可以通过DBGETPROP()函数得到。
下面,我们简要介绍几个属性:异步执行。
默认值为 .F.。
同步执行是指:通过连接传送到后端的命令会被一句一句地执行,前一句没有执行完毕后一句就不会被执行;而同步执行是指:当通过连接发出命令后,不管后端是否完成并返回结果,客户端程序可以继续往下走。
超时间隔-空闲(分)。
默认值是 0。
设定一个非 0 值时,一个连接如果在这段时间内没被使用,Visual FoxPro 将使它休眠,再次使用该连接时 Visual FoxPro会激活它。
注意使用该属性,因为它常常使您的应用程序产生不明不白的错误,如"Connectivity error: unable to retrieve specific error information. Driver is probably out of resources."实际上现在 ODBC 提供了 POOL 的功能,这些问题可由 ODBC 自行解决,我们不用操心。
vfp+sql使用方法
VFP因它简单易学,可快速建立应用软件而深受广大程序员喜爱,但其数据库系统不安全也是令广大用户非常头痛。
随着MS SQL SERVER数据库系统的推广应用,其强大的安全性能普遍受到好评。
笔者在长期的编程实践中发现利用VFP的SQL PASS-THROUGH(SPT) 技术结合MS SQL SERVER 数据库系统,也能象VB、DE LPHI、POWERBUILDER一样轻松开发出优秀的客户/服务器(C/S)应用软件。
现通过编写一个简单的通信录例子和广大VFP爱好者共同探讨。
一、服务器端MS SQL SERVER数据库设计1、在MS SQL SERVER中建立名为“SFXT”的数据库。
2、在SFXT数据库中建立名为“通信录”的表,结构如下:列名(字段名)数据类型长度姓名 CHAR 8生日 DATETIME 8电话 CHAR 11EMAIL CHAR 30并将姓名设置为主键3、在SFXT数据库中建立查询出所有记录的存储过程 SP_SEARCHALLCREATE PROCEDURE [SP_SEARCHALL] ASSELECT * FROM 通信录 ORDER BY 姓名RETURN4、在SFXT数据库中建立插入新记录的存储过程 SP_INSERTDATACREATE PROCEDURE [SP_INSERTDATA]@NAME [CHAR] (10),@BIRTHDAY [DATETIME],@TELEPHONE [CHAR] (11),@EMAIL [CHAR] (30)ASINSERT INTO 通信录(姓名,生日,电话,EMAIL) valueS (@NAME,@BIRT HDAY,@TELEPHONE,@EMAIL)RETURN二、客户端VFP的SQL PASS-THROUGH技术设计1、建立VFP表单界面,按钮内容如下建立ODBC数据源建立连接方式1建立连接方式2活动连接属性设置执行存储过程查询数据执行SQL语句查询数据向存储过程传替参数插入新记录设置当前表的属性修改数据断开指向数据源的连接退出程序2、建立名为SFXT的ODBC数据源连接MS SQL SERVER中的SFXT数据库可通过执行上面VFP表单的按钮建立ODBC数据源来完成;或者通过运行W INDOWS控制面板中的ODBC数据源来完成,主要设置包括选择SQL SERVE R驱动程序,通信协议,登录标识与密码等。
谈谈VFP和SQLSERVER搭配做CS系统
谈谈VFP和SQLSERVER搭配做C/S系统1.CLIENT/SERVER到底是什么?C/S属于2-TIER系统,适合于中小型应用系统。
大系统一般都用3-TIER了。
打个比方单机数据库系统(比如VFP),相当于前店后库.店里需要什么东西,得自己去库房找,库房管理也是有你自己进行.而C/S系统下,店和库是相对独立的,有一个专门的库房管理(数据SERVER),店里需要什么,按照手续把单子给库房管理人员,由他们去操作。
因此可以看出C/S的优点:支持多用户;更有效的数据管理,数据安全和可靠得多;远程使用数据。
如果你是单机使用当然没有太大必要使用C/S了。
如果用VFP本身做C/S系统,效果不是很明显,因为VFP的数据管理功能不是很强,比如加锁解锁都需要程序来操作.我主要说的是VFP/SQLSERVER系统。
2.SQLSERVERSQLSERVER是微软发布的RDBMS(关系数据库管理系统),ORACLE,INFOMIX,POWERBUILD,也都是类似的系统.他们就相当于仓库的管理系统,但功能不仅仅是数据管理.微软的数据库产品从功能和规模由小到大排列依次是:ACCESS,VFP,SQLSERVER。
稍微大一点的系统,SQLSERVER是需要专人管理的,这就是DBA(DATABASEADMINISTRATOR)的位置.现在北美人才市场上,DBA的工作比程序员的工作好找些.工资比普通程序员略高,工作稳定性也强一些。
SQLSERVER是一套大的软件系统,可以安装在专门的NT数据SERVER上,也有个人版可以安装在WIN95/98上,主要是为了咱们这些程序员方便测试.它的功能主要有这么几块:数据库的管理和维护,用户/安全管理,数据的发布/转换。
3.用VFP/SQLSERVER做C/S系统VFP和SQLSERVER的搭配应该是比较完美的,但因为VB才是微软的主流产品(VB一直是微软的,FOXPRO 是后来才买的,后娘生的),所以微软从来没有大力推荐或者宣传过VFP,而是把VFP独有的数据库技术融合到自己的其它产品里了:SQLSERVER,ODBC,OLEDB/ADO.最近甚至把VFP从VISUALSTUDIO里独立出来了。
浅析VFP与SQL Server在C/S系统中的应用
2 . 2 表单设 计 在V F P运行 环境 中建 立项 目 S Q L , 在项 目中新
建表单 c o n n ( 配置服 务器 地址 的界 面系统 设 计 主要 思 想 , 信 息 内容仅 包含 姓名及 年龄字段 。满 足一般 管 理系统
就 目前使 用 V F P的用 户来 说 , 多 数使 用是 单 机数 据 库操 作 。然而对 中小 型 企 业 而 言 , 为 了应 对 多用 户
时新建数据库名 为
图1 所示 。
的数据库 , 其结构 和内容 如
同时操作使用 , 是否就必须放弃 V F P数据库而择他 法呢, 回答是 否定 的 。
U p d a t e 等命令 以字符串 的方式传到 S Q L S E R V E R , S Q L S E R V E R再 解 析 执 行 命 令 并 返 回结 果 , 并 由
V F P获 取 而 显 示 出 来 。 再 由 V F P数 据 库 移 植 到
S Q L S e r v e r 中, 则直 接 通 过 V F P 自带 的升迁 向导 直
1 V F P与 S Q L S e r v e r 联 用 的可行 性
V F P的人 机交互 的命 令 与 S Q L S e r v e r 的命 令执 行, 可 以通过 3种方 式进 行 : 远程 视 图 、 A D O控 件及
s e t ( S Q L P A S S T HR O U G H) 。由于远 程视 图和 A D O
第2 9卷
第 1 2 期
甘 肃科 技
Ga ns u S c i e n c e a nd Te c h no l o g y
开发基于SQLSERVER的CS数据库应用系统
开发基于SQLSERVER的CS数据库应用系统SQL Server 6.5作为面向中小型企业的网络数据库服务系统,提供了与众多高级数据库管理器相同的运行性能,向传统的数据库厂商发起了强有力的挑战。
在程序设计方面:SQL Server 6.5采用了关键而新颖的对称式结构,从而简化了程序设计,并且 Microsoft在它的Visual Basic可视化编程语言中为程序员提供了良好的控件;在数据库管理方面:SQL Server 6.5以一种易于管理的方式处理多服务器事务管理,提供了一种把SQL Server系统扩展而超出单个计算机能力的方法。
SQL Server 6.5主要具有以下几个功能:全面的数据完整性保护,无论是复杂的事务支持和高级安全性,还是面向用户的数据库隐式部分,以及数据完整性保护都适用;与Windows NT集成,允许在SMP(对称多处理)系统中进行彻底的多线程和对称多处理,并且可集成到分布式管理环境中;在低造价平台上也具有突出性能;为系统管理员提供一流的管理工具;对多处理器“分布式”事务的内在支持。
以下介绍一种怎样利用Microsoft SQL Server 6.5在Windows NT Server上构筑开发环境,完成一般的客户/服务器应用系统。
1. 在SQL SERVER 6.5上创建一个数据设备(在创建数据库之前必须为该数据库创建一个存储设备)(1) 从 Microsoft SQL Server 6.5 Utilties 程序组内打开SQL EM。
(2) 在Server Manager 窗口里,选择创建数据库的服务器。
如hfnm.。
(3) 选择Manage菜单项,然后选择Database Device选项。
出现Manage Database Device窗口。
(4) 选择New Device 按钮(第一个)。
出现New Database Device窗口。
(5) Name:为所要创建的设备名;Location:可以选择创建设备的地点(如:c:\databas e);Size(MB):用于设定此设备的大小(一般为数据库的1.25倍)。
浅谈VFP使用SPT技术开发C/S应用系统
浅谈VFP使用SPT技术开发C/S应用系统前言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事件里打开光标和表。
这样,我们可以控制得更多。
而这种控制,将会让我们在以后面对更多用户时,不再措手不及。
浅谈VFP使用SPT技术开发C-S应用系统
浅谈VFP使用SPT技术开发C/S应用系统前言Visual FoxPro数据库开发工具具有易于掌握、易于开发、项目管理方便灵活、拥有强大编程语言、对系统资源要求不高等特性。
长期以来,VFP以其小而巧的特点,受到中、小型数据库开发者的青睐。
随着VFP程序应用的深入,我们会发现VFP数据库文件、表文件存在一些弊端,因为这些固有的问题,开发人员不得不去寻求更安全的开发策略,保证我们的应用程序,稳定可靠,安全无患。
通常的解决办法是使用结构化查询语言服务器SQL Server,提供后台数据服务。
一、做在前面1.在设计VFP表单时,改善对DBF表的访问:通常,FoxPro应用程序都使用DBF表来存储数据。
对于单用户的应用DBF表是很有效的。
可以独占的打开表并绑定表的字段到表单控件。
可以不再使用内存变量来复制数据字段以用于增加或编辑。
可以简单的把缓冲模式设为3以有效地把表单与数据字段分离开来,然后发出TableUpdate以永久地修改数据,或者发出TableRevert以忽略所发生的改变。
对于多用户的应用,只需要以共享方式打开所有的DBF表。
通常,在表单的数据环境里我们会加入所有的表和视图以便其自动打开。
由于在表单控件创建前所有别名已经打开,使用表单数据环境可以节省我们的开发时间。
当把一个表加入表单的数据环境里,当表打开时,表的记录指针将会移动指向当前索引标识的第一个记录。
但是使用数据环境,在多用户环境下,要有效控制数据表,却不是很顺利,可能会有很多“表已打开的”的提示。
所以,要开发多用户应用系统,我们经常用自己的代码,在表单的Load事件里打开光标和表。
这样,我们可以控制得更多。
而这种控制,将会让我们在以后面对更多用户时,不再措手不及。
2.建立数据字典在表单的Load事件里,以上面调用OpenDBF过程的方式来创建每一个光标,这是一种很好的方法。
但是这种方法还是存在一定的隐患,虽然这种几率是非常的小。
OpenDBF.PRG打开的是物理存在的表,万一该表被误删了或损坏了,这么办?相信每位程序员都会有自己的应对策略。
开发基于SQL Server数据库平台的VFP应用程序
%!"&$ 应用程序的原型设计
这时候 ! 如 果 删 除 客 户 机 上 的 数 据 库 N29%(20+( ! 应用程序 照 常 运 行 " 因 为 应 用 程 序 已 经 通 过 >0MA 与
<%=+,0+(+ " " 在 数 据 库 <%=+,0+(+ 中 建 立 连 接 和 远 程 视 图 ! 其 >05? 数据源为 @2&(>05A "
!! "#$ 与远程数据库 %!% 远程数据库与本地数据库
在 ’() 模式的 *+, 应用程序 中 ! 本 地 数 据 库 是 作 为 *+, 应用程序中的一部分而存在的 " 在开发阶段 ! 本 地数据库就是 *+, 工程项目中的数据 ! 其必然是 *+, 类型的数据库 " 远程数据库是指 *+, 中的远程视图通 过 -./’ 数据 源 所 连 接 的 数 据 库 ! 其 类 型 可 以 是 *+, 数 据 库 ! 也 可 以 是 其 他 类 型 的 数 据 库 ! 如 #)01 )23423 $
0+(+ 所 在 的 文 件 夹 3)-H0+(+M+&2 复 制 到 安 装 有 )-H
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第12卷 第3期乌鲁木齐成人教育学院学报V o l.12,N o.3 2004年8月Jou rnal of U rum qiA du lt Educati on In stitu te A ug.2004用V FP与SQL SERV ER构建c s数据库应用系统①②赵玉平(乌鲁木齐成人教育学院,新疆乌鲁木齐 830002)摘 要:实际应用中,数据库中数据的安全性越来越重要。
本文就如何使用V FP的SPT技术来实现V FP与M S SQL SERV ER数据源的数据交换以提高数据的安全性作一探讨。
关键词:SPT技术;数据交换;SQL SERV ER中图分类号:T P311.13 文献标识码:A 文章编号:167125179(2004)0320068204 V isua l F ox P ro(以下简称V F P)是微软公司V isua l系列开发工具中的一种。
V F P数据库管理系统软件因它简单易学,可快速建立应用软件而深受程序开发者的喜爱,但其数据安全性也是令许多用户极为头痛的问题。
随着M S SQL S ERV ER数据库系统的推广应用,其强大的安全性能普遍受到赞扬。
利用V F P的SQL PA S S-T H ROU GH(S P T)技术,结合使用W ind o w s中的ODB C技术和M S SQL S ERV ER数据库系统,既能提高数据库的安全性能,又能开发出优秀的客户 服务器(C S)应用软件。
一、SQL P ass T h roug h技术所谓SQL P ass T h roug h技术(以下简称S P T),是指我们将符合服务器语法的任何命令,通过使用V isua l F ox P ro SQL P ass T h roug h函数对远程服务器进行直接访问。
从而实现前端(或称客户端)通过连接通道送至后端(或称服务器端)的SQL S erver来执行(当然也可以是其它大型数据库系统,如:oracle),与SQL S erver进行直接的沟通。
并能够更直接地控制后台服务器上的数据源。
比如我们可以利用S P T直接去执行存储在SQL S erver上的存储过程。
S P T技术其本质应是V F P对ODB C的A P I的封装,它的优劣主要体现在以下几个方面:1、可以使用服务器端的特有功能。
执行远程数据库的存储过程(基于SQL S ERV ER)和基于服务器的内部函数等;2、可使用服务器所支持的SQL扩展功能,进行数据定义、服务器管理和安全性管理等事务管理;3、可执行除S EL ECT以外的其它SQL语句,如IN S ER T,U PDA T E,D EL E T E等,对后台数据库的操作拥有更多控制权。
该方法的不足之处在于没有使用图形化的用户界面,而且必须在命令窗口或程序中直接输入SQL命令。
通信连接需要人工建立和维护。
在S P T中经常使用的函数主要有:1、连接管理函数3SQL CON N ECT()建立一个指向数据源的连接。
3SQL S T R IN GCON N ECT()使用一个连接字符串建立和数据源的连接。
3SQL D IS CON N ECT()终止与数据源的连接。
2、SQL语句的执行和控制函数①[收稿日期]2004202226②[作者简介]赵玉平(1961—),男,河南洛阳人,乌鲁木齐成人教育学院计算机科学技术系讲师,主要从事数据库、多媒体应用技术的教学和研究。
3SQL PR E PA R E ()在使用SQL EX EC ()执行远程数据操作前,可使用本函数使远程数据为将要执行的命令做好准备。
3SQL EX EC ()将一条SQL 语句送入数据源中处理。
3S qlcancel ()请求取消一条正在执行的sql 语句。
3SQLM OR ER ESUL T S ()如果存在多个结果集合,则将另一个结果集合复制到V F P 临时表中。
3SQL COM M IT ()提交一个事务。
3SQL ROL L B A CK ()取消当前事务处理期间所作的任何更改。
3、数据来源信息函数3SQL TA B L ES ()把数据源中的表名存储到V ISUA L FO X PRO 临时表中。
3SQL COL UM N S ()4、存取连接通道的属性函数3SQL GE T PRO P ()返回一个活动连接的当前设置或默认设置。
3SQL S E T PRO P ()指定一个活动连接的设置。
下面以应用实例来说明这些函数的使用及其参数的设定:S tore sqlstring connect (’d sn =sqln t ;u id =sa ;pw d =sqlp ass ’)to CON If CON <=0 M essag ebox (“无法与数据源建立连接”,48,“异常情况!”) E lseM essag ebox (“建立连接成功”,16,“ODB C 连接数据源”)S qlex ec (CON ,“select 3f ro m m y tab ”,“m y tab ”)S elect m y tab B ro w se S qlcancle (CON ) S qld isconnct (CON ) E nd if有了对S P T 技术的了解之后,下面通过实例来说明V F P 与m s sql server 通讯的具体实现。
二、服务器端M S SQL S ERV ER 数据库设计1、在M S SQL S ERV ER 中建立名为“tx lu ”的数据库。
2、在tx lu 数据库中建立名为“通讯录”的表,结构如下:栏目名(字段名)数据类型长度姓名CH A R 10性别CH A R 2电话CH A R 11EM A ILCH A R 30 并将姓名设置为主键3、在T X L U 数据库中建立查询出所有记录的存储过程S PQU ES TDA TACR EA T E PROCEDU R E S PQU ES TDA TA A S S EL ECT 3FROM 通讯录ORD ER B Y 姓名 Go 4、在T X L U 数据库中建立插入新记录的存储过程S PIN S ER TDA TACR EA T E PROCEDU R E S PIN S ER TDA TA @N A M E [CH A R ](10), @S EX [CH A R ](2),・96・第3期赵玉平 用V FP 与SQL SERV ER 构建c s 数据库应用系统 @T EL E PH ON E [CH A R ](11), @EM A IL [CH A R ](30) A SIN S ER T IN TO 通讯录(姓名,性别,电话,EM A IL );va lueS (@N A M E ,@S EX ,@T EL E PH ON E ,@EM A IL )GO三、客户端V F P 的SQL PA S S -T H ROU GH 技术设计在不具备网络开发环境条件下,要编制c s 模式软件(或做实验练习)。
首先在本计算机上要安装V F P 系统,注意选择ODB C 组件,该组件提供了V isua l F ox P ro 6 8连接后端数据库的驱动程序。
并建立一个.DB C 数据库(作为ODB C 数据源),把需要的数据表放入该数据库中,也为今后在服务器上的使用做好准备,然后只需在“控制面板”的ODB C 里配置[用户D SN ]的驱动程序为M icrosof t V isua l F oxp ro D river ,即可执行各种SQL S erver 命令。
在此主要设置包括选择SQL S ERV ER 驱动程序,通信协议,登录标识与密码等。
做好准备工作后,就可进行以下工作。
1、建立一个V F P 表单界面(如图所示),可根据所需情况建立一些按钮控件,在此可选择如下内容:建立连接方式,活动连接属性设置,执行存储过程查询数据,执行SQL 语句查询数据,向存储过程传递参数插入新记录,断开指向数据源的连接,退出程序等按钮。
2、建立名为T X L U 的ODB C 数据源,连接M S SQL S ERV ER 中的T X L U 数据库(若在前面已做好此处可省略)。
建立连接ODB C 数据源按钮控件的CL ICK 事件:SQL S T R IN GCON N ECT ()3、连接M S SQL S ERV ER 数据源的方式使用现有数据源名称建立连接,“建立连接”按钮CL ICK 事件: PUB L IC V ODB C ,V U S ER ,V PW D ,V CON V ODB C =’T X L U ’ V U S ER =’SA ’ V PW D =’123456’ V CON =SQL CON N ECT (V ODB C ,V U S ER ,V PW D ) IF V CON >0 M ES SA GEB OX (’连接成功!’,0+16,’ODB C 数据源’) EL S E M ES SA GEB OX (’连接失败!’,0+48,’ODB C 数据源’) EN D IF或使用连接字符串建立数据源连接,“建立连接”按钮CL ICK 事件:S TO R E SQL S T R IN GCON N ECT (’D SN =T x lu ;U ID =SA ;PW D =123456’)TO V CON IF V CON >0 M ES SA GEB OX (’连接成功!’,0+16,’ODB C 数据源’) EL S E M ES SA GEB OX (’连接失败!’,0+48,’ODB C 数据源’) EN D IF 4、数据源连接的主要参数设置(可根据需要增减),“连接属性设置”按钮CL ICK 事件SQL S E T PRO P (V CON ,“CON N ECTB U S Y ”,.F .)SQL S E T PRO P (V CON ,“A S YN CH RON OU S ”,.F .)SQL S E T PRO P (V CON ,“B A T CH M OD E ”,.F .)SQL S E T PRO P (V CON ,“CON N ECT T IM EOU T ”,20)SQL S E T PRO P (V CON ,“IDL E T IM EOU T ”,0)・07・乌鲁木齐成人教育学院学报2004年SQL S E T PRO P (V CON ,“T RA N SA CT ION S ”,1)5、执行存储过程查询数据按钮CL ICK 事件SQL EX EC (V CON ,“EX ECU T E S P _QU ES TDA TA ”,“我的通讯录”) B ROW S E6、执行SQL 语句查询数据按钮CL ICK 事件 SQL EX EC (V CON ,“S EL ECT 3FROM 通讯录”,“我的通迅录”) B ROW S E 7、向存储过程传递参数插入新记录按钮CL ICK 事件 L OCA L V N A M E ,V S EX ,V T EL E PH ON E ,V EM A IL ,V SQL V N A M E =’姓名’+S YS (3) V S EX =‘性别’+S YS (3) V T EL E PH ON E =S YS (3) V EM A IL =S YS (3)+’@H O TM A IL .COM ’ V SQL =“EX ECU T E S P _IN S ER TDA TA ; “+”’“+V N A M E +”’,’“+V S EX +”’,’“+V T EL E PH ON E +”’,’“+V EM A IL +”’”IF SQL EX EC (V CON ,V SQL )>0 M ES SA GEB OX (’插入记录成功!’,0+64,’信息’)EL S E M ES SA GEB OX (’插入记录失败!’,0+48,’信息’)EN D IFSQL EX EC (V CON ,“EX ECU T E S P _QU ES TDA TA ”,“我的通讯录”)B ROW S E8、断开指向数据源的连接按钮CL ICK 事件 SQL D IS CON N ECT (V CON )9、退出程序按钮CL ICK 事件 T H IS FORM .R EL EA S E另外,利用V F P 的数据库升迁向导,可以实现将本地数据库转换为远程数据库的功能。