VFP+SQL SERVER实例讲解13
用VFP与SQL SERVER构建cs数据库应用系统
第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进行直接的沟通。
vfp多表查询的例子
vfp多表查询的例子全文共四篇示例,供读者参考第一篇示例:Visual FoxPro(VFP)是微软推出的一款结构化查询语言(SQL)和关系数据库管理系统(RDBMS),在数据处理和数据分析方面具有良好的性能和灵活性。
VFP支持多表查询,使用户能够在多个数据表之间进行联合查询,以获取更细致的数据分析结果。
在VFP中,多表查询可以通过使用SQL语句来实现。
SQL语句是一种标准化的数据库查询语言,可以用来访问和操作数据库中的数据。
下面以一个实际案例来介绍VFP多表查询的用法:假设我们有两个数据表,一个是“学生信息表(Student)”,包含学生的姓名、性别和年龄等信息;另一个是“成绩表(Score)”,包含学生的考试科目、考试成绩等信息。
现在我们希望查询每位学生的姓名、年龄和各科成绩的总分,可以通过以下步骤实现:第一步:连接两个数据表在VFP中,我们需要连接两个数据表,以便在查询时能够同时获取学生信息和成绩信息。
可以使用SQL语句中的“JOIN”关键字来实现连接,具体代码如下:```SQLSELECT , Student.Age, SUM(Score.Score) AS TotalScoreFROM StudentJOIN ScoreON Student.ID = Score.StudentIDGROUP BY , Student.Age;```在上面的代码中,我们使用了“SELECT”语句来选择要查询的字段,包括学生的姓名、年龄和总分;使用“JOIN”关键字来连接两个数据表,其中“ON”后面的条件是两个数据表中的关联字段;使用“SUM”函数来计算每位学生的总分;最后使用“GROUP BY”语句来对结果进行分组,以获取每位学生的总分。
第二步:执行查询完成了连接两个数据表和编写查询语句后,我们就可以执行查询了。
在VFP中,可以在查询分析器中输入以上代码并执行,或者将代码嵌入到程序中进行执行。
执行查询后,就可以得到每位学生的姓名、年龄和总分的查询结果。
用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+SQL SERVER实例讲解7
VFP+SQL SERVER实例讲解7[日期:2007-06-21] 来源:作者:[字体:大中小] sp;from customers*您将看到:所有记录Phone的值已经被Visual foxpro的客户端修改了,值是:9999。
按理说第2条、第3条记录被更新时会发生冲突,但由于Visual FoxPro临时变更了更新冲突的检测方案为“关键字段”,这样原本应该能检测到的冲突被忽略了,Visual FoxPro客户端的新值强行覆盖其它客户端的修改。
事实上,查看sql Server 的 Profiler 工具也证明了以上论述:sp_executesql N'UPDATE dbo.Customers SET Phone=@P1 WHERE CustomerID=@P2', N' @P1 nvarchar(24),@P2 varchar(50)', N'9999 ', 'ALFKI'sp_executesql N'UPDATE dbo.Customers SET Phone=@P1 WHERE CustomerID=@P2', N' @P1 nvarchar(24),@P2 varchar(50)', N'9999 ', 'ANATR'sp_executesql N'UPDATE dbo.Customers SET Phone=@P1 WHERE CustomerID=@P2', N' @P1 nvarchar(24),@P2 varchar(50)', N'9999 ', 'ANTON'sp_executesql N'UPDATE dbo.Customers SET Phone=@P1 WHERE CustomerID=@P2', N' @P1 nvarchar(24),@P2 varchar(50)', N'9999 ', 'AROUT'放弃更新如果要“放弃客户端对光标已经实施的变动”,该怎么办呢?这很简单,请使用TABLEREVERT()函数。
用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 中文版程序设计--应用实务》的内容,但绝对不是抄袭,大家有兴趣可以买一本读上一读。
SQL-Server存储过程案例详解
SQL Server存储过程入门案例详解提出问题我使用过几次SQL S erver,但所有与数据库的交互都是通过应用程序的编码来实现的。
我不知到在哪里使用存储过程,也不了解实现存储过程需要做哪些工作。
希望能详细说明。
专家答疑存储过程是存储于数据库中的一组T-SQ L语句。
有了存储过程之后,与数据库的交互就没有必要在程序中写一堆的SQL语句,而只需用一条语句调用适当的存储过程来完成就可以了。
另外,由于代码是存储在数据库中,我们也可以在不同的应用程序或查询窗口中不断的重复利用那些代码。
下面将讲述一些简单的例子,它们将说明如何构造和使用存储过程。
下面的例子将简单的说明如何创建存储过程。
以下所有例子均使用AdventureWorks数据库。
其它的数据库和应用程序可以依此类推。
例1 –简单的存储过程这个简单的存储过程将实现如下功能:从P erson.Contact表中取出第一条记录。
CREATE PROCEDURE uspGetContactASSELECT TOP 1 ContactID, FirstName, LastNameFROM Person.Contact创建完上面的语句后,使用下面的命令可以执行该存储过程。
EXEC uspGetContact查询的结果如下:例2 –带参数的存储过程这个例子在上个例子的基础上做了一点修改:传入了一个参数,根据传入的参数来查询相应的记录。
为了更好地利用上面的例子,这次我们就不用重新再创建一个存储过程了,而是使用ALTE R PROCEDURE(注意:不是CRE ATE PROCEDURE)来修改例1中已经创建好的存储过程。
代码如下:ALTER PROCEDURE uspGetContact @LastName NVARCHAR(50)ASSELECT TOP 1 ContactID, FirstName, LastNameFROM Person.ContactWHERE LastName = @LastName下面显示了运行存储过程的2种不同方法。
在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)。
VFP9.0中SQL语句基础
(三)、查询排序 当需要对查询结果排序时,应该在SELECT语句中使用ORDER BY子句。 ORDER BY 子句包括了一个或多个用于指定排序顺序的列名,排序方式 可以指定,DESC为降序,ASC为升序,缺省时为升序。ORDER BY子句必 须出现在其他子句之后。 例8 查询bm表中的数据,并按bmxh字段排序。 SELECT * FROM bm ORDER BY bmxh 说明:ORDER BY在默认情况下为升序,若要降序排列,命令应改为: SELECT * FROM bm ORDER BY bmxh DESC。 当然也可以增加查询条件:比如查询bmxh前4位为“1701”的数据并 按升序排列,则命令如下: SELECT * FROM bm WHERE bmxh='1701' ORDER BY bmxh 例9 多列指定排序。查询会考成绩库,按会考证号和课程号排序。 SELECT * FROM 085卧龙会考成绩 ORDER BY 会考证号,课程号
(二)、条件查询 当要在表中找出满足某些条件的行时,则需使用WHERE子句指定查询条件。 例3 查询wbk中所有网报日期为2008年8月20日的数据。 SELECT * FROM wbk WHERE wbrq='2008-08-20' 说明:由于这个表中的wbrq字段是字符型的,所以‘2008-08-20’用了引号。 如果wbrq字段是日期型的,则需改为wbrq={^2008-08-20} 例4 查询08年5月卧龙区会考成绩库中课程号为01、等在1-3之间的数据。 SELECT * FROM 085卧龙会考成绩 WHERE 课程号='01' AND 等级 between "1" AND "3" 说明:这里使用了SQL中一个特殊的运算符:between,使用方法是: 字段名称 between 值1 AND 值2
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及Oracle
1.连接SQL ServerPublic gnConnhandle &&将该SQL连接句柄设为全局变量,其他过程中仍可继续调用lnWindowHandle=0lcODBCDriver='SQL Server' &&Driver类型lcODBCServer ='10.1.50.3' &&SQL Server 服务器名lcODBCDatabase='pdmdata' &&要连接的数据库名称cna='admin' &&数据库用户名cpa='12345' &&数据库密码gnConnhandle=SQLSTRINGCONNECT('driver='+lcODBCDriver+';Server='+lcODBCServer+';u id=&cna;pwd=&cpa;database='+lcODBCDatabase)SQLSETPROP(0,'DispLogin',3)SQLSETPROP(0,"IdleTimeout",0)IF gnConnhandle<=0 &&判断SQL连接是否成功=MESSAGEBOX("连接数据库失败,请与系统管理员联系!",0+48,"提示")RETURNELSEWAIT WIND '成功连接数据库.....' TIMEOUT 4ENDIF2.链接Oracle首先要你本机要安装有oracle客户端,找到安装目录Oracle\ora90\network\ADMIN下的tnsnames.ora,里面可配置链接的服务器,例如增加一个名为mycon新连接,就在该文件下加入:mycon=(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 10.1.50.3)(PORT = 1521)))(CONNECT_DA TA =(SID = DEV)))以上改成你要连的IP即可。
sqlserver 50个经典案例
sqlserver 50个经典案例SQL Server是一款常用的关系数据库管理系统,被广泛应用于各个行业的数据存储、处理和管理。
下面将介绍50个SQL Server经典案例,涵盖了数据库的基本操作、性能优化、数据备份和恢复等方面。
1. 创建数据库:使用CREATE DATABASE语句可以创建一个新的数据库。
2. 创建表:使用CREATE TABLE语句可以在数据库中创建一个新的表。
3. 插入数据:使用INSERT INTO语句可以向表中插入新的数据。
4. 更新数据:使用UPDATE语句可以更新表中的数据。
5. 删除数据:使用DELETE FROM语句可以删除表中的数据。
6. 查询数据:使用SELECT语句可以查询表中的数据。
7. 连接表:使用INNER JOIN、LEFT JOIN和RIGHT JOIN语句可以连接多个表,并获取相关的数据。
8. 分组和聚合:使用GROUP BY和HAVING语句可以对数据进行分组和聚合操作。
9. 排序数据:使用ORDER BY语句可以对查询结果进行排序。
10. 删除表:使用DROP TABLE语句可以删除数据库中的表。
11. 修改表:使用ALTER TABLE语句可以修改数据库中的表结构。
12. 创建索引:使用CREATE INDEX语句可以创建表的索引,提高查询效率。
13. 删除索引:使用DROP INDEX语句可以删除表的索引。
14. 事务处理:使用BEGIN TRANSACTION、COMMIT和ROLLBACK语句可以进行事务处理。
15. 触发器:使用CREATE TRIGGER语句可以创建一个触发器,实现在表上自动执行特定的操作。
16. 存储过程:使用CREATE PROCEDURE语句可以创建一个存储过程,用于存储一系列数据库操作。
17. 函数:使用CREATE FUNCTION语句可以创建一个函数,并在查询中使用该函数。
18. 动态SQL:使用EXEC和SP_EXECUTESQL语句可以动态执行SQL语句。
数据库开发-sql server触发器如何使用实例解析
数据库开发-sql server触发器如何使用实例解析数据库开发-sql server触发器如何使用实例解析在数据库开发中,触发器是一种特殊的存储过程,它会在数据库表发生特定事件时自动执行。
触发器可以帮助我们实现数据的自动化处理和一些复杂的业务逻辑。
在本文中,我将详细介绍SQL Server触发器的使用实例,以帮助您更好理解和应用这一重要的数据库开发技术。
1. 触发器的基本概念在开始之前,让我们先来了解一下触发器的基本概念。
触发器是一种特殊的存储过程,它与数据库表相关联,并在表发生特定事件时自动执行。
这些特定事件包括INSERT、UPDATE和DELETE操作。
触发器可以在数据被修改之前或之后执行,这取决于触发器的类型,分为BEFORE和AFTER两种。
2. SQL Server触发器的创建在SQL Server中,我们可以使用CREATE TRIGGER语句来创建触发器。
以下是一个简单的创建触发器的示例:```sqlCREATE TRIGGER [触发器名称]ON [表名]FOR INSERT, UPDATE, DELETEASBEGIN-- 触发器的逻辑代码END```在上面的示例中,[触发器名称]表示触发器的名称,[表名]表示要关联的数据库表,FOR子句指定了触发器要响应的事件类型,AS子句中包含了触发器的逻辑代码。
3. 触发器的使用实例现在让我们来看一个实际的使用实例,假设我们有一个名为Student的表,其中包含了学生的尊称和芳龄信息。
我们想要在插入新的学生信息时,自动向另外一个名为StudentLog的表中插入一条日志信息,以便记录学生信息的变更历史。
我们可以通过触发器来实现这一功能。
```sqlCREATE TRIGGER trgAfterInsertON StudentAFTER INSERTASBEGININSERT INTO StudentLog (操作类型, 学生尊称, 操作时间)SELECT '新增', inserted.尊称, GETDATE()FROM insertedEND```在上面的示例中,我们创建了一个AFTER INSERT类型的触发器,当向Student表中插入新记录时,触发器会自动执行并向StudentLog 表中插入一条日志信息。
vfp第十三章
【例13-8】查询该班男女学生的人数。 本题查询中,其目标是统计男女学生人数,因此侧重点 放在分组统计中,其中需要使用到一个函数 Count( ), Count(*)表示对符合条件的所有记录进行统计。还需要用 Group By xb 对查询结果按性别进行分组。命令如下: Select xb As 性别,bj As 班级,Count(*) As 人数 From Xs Group By xb
常用的系统函数 AVG(表达式):求平均值。 COUNT(*):统计记录个数。 MAX(表达式表):求最大值。 MAX( ) MIN(表达式表):求最小值。 SUM(表达式):求表达式的和。
【例elect xb As 性别,AVG(Fox) As FOX平均, AVG(sx) As 数学平均,AVG(English) As 英语平均, MAX(sx) As 数学最高, MIN(sx) As 数学最低, MAX(english) As 英语最高, MIN(english) As 英语最低 From Xs ,Xscj Where Xs.xh=Xscj.xh Group By xb
rowsourcetype 3—SQL 语句
第三步,保存并运行,就可以得到查询结果
选项补充说明: 选项补充说明: ALL: ALL:表示查询的结果中可包括重复记录,系统默认。 DISTINCT: DISTINCT:表示查询结果中不包括重复记录。 TOP <数值表达式>: 数值表达式>:表示只输出满足条件的前几个 >: 记录,输出的个数由<数值表达式>确定。 数值表达式> PERCENT: TOP < 数值表达式 > PERCENT: 表示只输出满足 条件的前百分之几个记录,如TOP 50 PERCENT,表 示只输出满足条件的前50%的记录。 FORCE: FORCE : 表示严格按指定的联接条件来联接表,以免 VFP因进行联接优化而降低查询速度。
VFP案例13(SQL命令2)(1)
VFP案例13(SQL命令2)把VFP的默认目录设置为“VFP案例13(SQL命令2)”文件夹,然后完成下列操作。
●嵌套查询SELECT sname FROM student WHERE sno NOT IN(SELECT sno FROM score WHERE cno="002")&&查询那些学生没有选修“002”号课程的学生姓名。
SELECT sname FROM student WHERE sno IN(SELECT sno FROM score WHERE cno="002") AND sno IN(SELECT sno;FROM score WHERE cno="003") &&查询既选修了“002”号课又选修了“003”号课的学生的姓名SELECT * FROM student WHERE major=(SELECT major FROM student WHERE sname= "刘钟涛") &&查询与“刘钟涛”同学是同一专业的学生的信息。
SELECT * FROM score WHERE grade>(SELECT AVG(grade) FROM score)&&查询成绩高于所有选课的平均成绩的选课记录。
SELECT sname FROM student WHERE sno NOT IN(SELECT sno FROM score WHERE grade<=75)&&查询所有课程成绩都高于75分的学生的姓名●集合查询Visual Foxpro 9.0支持集合的并运算,使用union连接两个查询完成并运算。
SELECT * FROM score WHERE cno="003" UNION SELECT * FROM score WHERE cno='005'&&查询选修了“003”或“005”号课程的学生的选课信息●特殊选项SELECT * TOP 3 FROM score ORDER BY grade DESC &&显示成绩最高的3个学生的选课记录。
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的连接
VFP与SQLServer的连接展开全文VFP与SQL Server的连接(2007-03-13 00:59:43)VFP与SQL Server的连接(1)----建立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是用户用来存贮与数据库的连接信息,用户数据源只对用户可见而且只能用于当前机器上。
VFP表转换成SQL-Server表的方法
VFP表转换成SQL-Server表的方法实现转换的具体方法----我们以Foxpro的数据库结构的单位职工库(zg。
dbf)为例,进行数据转换。
其数据结构为:字段名类型字段长度实现转换的具体方法----我们以Foxpro的数据库结构的单位职工库(zg。
dbf)为例,进行数据转换。
其数据结构为:字段名类型字段长度小数点位数字段内容bh C 4 职工编号xm C 8 职工姓名xb C 2 性别nl N 2 0 年龄zw C 10 职务gzsj D 参加工作时间jl M 简历zp G 照片----实现步骤:----(1)、启动服务器,进入Window NT,SQL Server 6。
0,打开SQL Enterprise Manager为单位职工库创建一个数据库设备zg。
dat,然后在该设备上建立zg数据库及表(T able),表的数据结构要与zg。
dbf的数据结构一致。
或用以下SQL Server命令创建设备和创建表。
----(2)、在客户机上启动Foxpro,用USE命令打开需转换的。
dbf文件,用COPY 命令将。
dbf文件中数据转换成标准的文本文件。
txt----(3)、从客户机登录到Windows NT服务器上,将zg。
txt文件拷贝到服务器的职工库目录c:““zg下。
----(4)、在服务器上,由Windows NT进入到MS-DOS状态,然后执行bcp将数据从zg。
txt转换到SQL表,命令格式如下:---- bcp zg in zg。
txt /c /s mainserver /u manager /P 0001 (mainserver为服务器名,manager为用户名,0001为用户口令)。
----该转换方法速度较快,不占用服务器上事务日志空间。
但较为复杂、繁锁,操作者必须熟练掌握Foxpro、SQL Server的命令和操作,而且无法将Foxpro的Memo、General 字段转换到SQL Server表。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
VFP+SQL SERVER实例讲解13
[日期:2007-06-21]来源:作者:[字体:大中小] p;to connect前的勾去掉就可以了。
另外,如果sql server的版本不同有时侯也会造成连接失败。
最后,给大家一个很烂的主机玩玩,(别说是我说的,呵呵!要不下次不给了!)
61.132.16.68 uid=sa;pwd=*********
如何得到当前所在的sql的数据库名称
这里有几个关于SQL SERVER的问题想向您请教(服务器端脚本编程):
(1)如何在SQL SERVER中用SQL语句获得当前的数据库名称?
(2)如何在定义一个全局变量而不是局部变量,因为我在这里定义了一个循环,在这个循环里有对一个临时表加字段和对临时表插入数据的操作。
但这两个操作必须放在不同的批次里.(需要用GO语句分开)。
这时控制循环的变量参数就不起作用了,因为变量参数只能在一个批次里起作用,到下一个批次就要重新定义了。
真头疼!能不能定义全局变量,让它在所有批次中都起作用?
这两个问题,其实并不具有一定的普遍性,但是解决这两个问题的思路和方法却有一定的普遍性,所以我专门把这两个问题拿出来讲一下
(1)首先这个当前所在 DataBase 肯定需要用到系统存储过程这一点是十分肯定的,我自然想到了sp_who 执行后,列出了当前所有的系统进程的所有信息,我一看有 Runnable,有 Slepping 肯定应该是runnable 了,一看他的 spid 想起来了,有个系统的全局变量
@@SPID,先试一下,sp_who @@spid 哈哈成功了这个问题的解决之道是一定要熟悉系统的存储过程和系统全局变量,并且要善于观察和思考
(2) 至于第二个问题,则纯粹是一种 t-sql 编程的思路问题,首先我不赞同用一个规则去判断两个存储过程,因为这不符和 t-SQL 编程的规范,但是既然问题出来了,就要想办法解决,我们知道在两个批次
里是不可能共巷数据的,所以
我想到了 cursor 游标,最终经过测试,也成功了。
既然问题出来了,就要想办法解决,我们知道在两个批次里是不可能共巷数据的,所以我想到了 cursor 游标,最终经过测试,也成功了。
怎样才能限制SQL Server只能让指定的机器连接
Q. How can I restrict access to my SQL Server so that it only allows certa
(v1.0 19.10.1998)
怎样才能限制我的SQL Server只能让指定的机器连接
A. SQL Server has no built-
in tools/facilities to do this. It also does not have the facility to run a stored-procedure on connection that could be written/used to do this. Therefore you hav SQL Server没有这样的功能,也没有提供在连接时执行某一特定过程的
功能。
这里介绍几种实现的方法
1. Put the SQL Server behind a firewall and use that to restrict access. This is the 使用防火墙,它提供了安全和你想用的工具。
2. Write your own ODS Gateway and point the clients at that instead of the SQL S config entries to point straight at the SQL Server. There are examples of ODS cod 写自己的ODS网关代替SQL Server的客户端 - 在ODS网关中检查。
不
过,这并不能停止正常的客户端连接SQL Server。
在
SQL Programmers Toolkit中有一个这样的例,可以从微软站点免费下
载。
3. Write a constantly running/scheduled stored-
procedure that checks the relevant column in sysprocesses (net_address), and the 写一个存储过程检查sysprocesses中的相应列(net_address)。