一步一步教你做C/S系统[
VFP要实现C/S即客户端/服务器的编程,前台要用VFP编程环境开发(这不是废话吗?),现在VFP常用的版本VFP6、VFP8以及VFP9,我个人比较喜欢VFP9,当然,用什么版本完全取决于您自己的喜好!至于后台,可以用SQLSERVER,Oracle ,Informix,MYSQL ,Sybase等等,现在常用的是SQLSERVER,本教程所讲的就是VFP+SQLSERVER,开发环境为WINXP SP2、VFP9 SP1、SQLSERVER SP4。
在论坛中,最近老是有人提问,怎么才能做网络版的程序,越来越多的Visual FoxPro用户开始注意到Client/Server应用程序的重要性,他们开始安装SQL Server并开始深入的研究
Sql Server,我个人认为,其实用VFP开发网络版的程序,最重要并且最先要我们解决的,是怎样使Visual FoxPro与SQL Server在一起顺利的运行,怎样发挥两者的优越特性,而并不是一味的提问,盲目的从网络上down 很多资料,其实书先不要看太多,重要是的是弄懂书上命令的作用以及作者重点讲解的东西,因为那是他们的经验。等到你成功的做出一些网络版的软件,你再回头看从网络上DOWN下来的N个资料,那样理解的更快。
在这里,我再一次重申,我个人比较喜欢和崇拜VFP界泰斗级人物“张洪举”,所以在此,再次向大家推荐他的所有书籍,投入一点点,会使你受益无穷。
实现C/S的方法很多,远程视图,SPT,CA,ADO等等,就个人喜欢而言,我比较喜欢SPT,当然,SPT也有着SPT的缺点,毕竟没有很完美的东西。(CA,ADO建议大家好好学习,我也看过一些资料,不过人懒了,也有许多工作要做,年龄大了也不允许我再前进了,希望大家积极的接受新事物。)
为什么要引入SPT的概念
您也许已经发现了远程视图的不足,是的远程视图的缺陷正是SPT的优势所在:
执行除Select以外的其他的SQL语句,如Insert 、DELETE及Update等
执行后端数据库的存储过程
执行后端数据库的特殊的函数、命令
一次得到多个数据集合
SPT是SQL Pass Through的简写,它与远程视图在一起共同组成Visual FoxPro远程数据访问体系,利用它们你就可以开发完整的Client/Server构架的系统了!与“远程视图”相比,SPT技术也有以下缺陷:
没有图形用户界面
必须人工维护连接
数据集合是“可读写光标”,要使它成为“可更新光标”必须进行设定
是不是看的头有些大?别着急,继续看下去吧!
进入正题了,好好看!
下面介绍SPT的27个指令集
1.SQLCONNECT([DataSourceName,cUserID,cPassword|cConnectionName])
异步建立与数据源的连接。
2.SQLSTRINGCONNECT
([cConnectString])
异步通过连接字符串建立与数据源的连接。
3.SQLDISCONNECT(nConnectHandle)
异步断开数据源连接。
4.SQLGETPROP(nConnectionHandle,cSetting)
异步返回活动连接的当前设置或缺省设置参数值。
5.SQLSETPROP(nConnectionHandle,cSetting[,eExpression])
异步设置活动连接的属性参数值。
6.SQLPREPARE(nConnectionHandle,cSQLCommand[,CursorName])
异步准备
7.SQLEXEC()
远程执行的SQL语句。
8.SQLEXEC(nConnectionHandle[,cSQLCommand[,CursorName]])
同步,异步将SQL语句发送到数据源进行处理。
9.SQLCANCEL(nConnectionHandle)
异步请求取消正在执行的SQL语句。
10.SQLMORERESULTS(nConnectHandle)
同步,异步如果有多个结果集,将另一个结果集复制到光标中。
11.SQLCOLUMNS(nConnectionHandl,Tablename[,"FOXPRO"|"NATIVE"]
[,CursorName])
同步,异步将数据源指定表的列信息存放到Visual FoxPro光标中。
12.SQLTABLES(nConnectionHandle[,cTableTypes][,cCursorName])
同步,异步将数据源中表的信息存放到Visual FoxPro光标中。
13.SQLCOMMIT(nConnectionHandle)
异步提交一项事务。
14.SQLROLLBACK(nConnectionHandle)
异步取消当前事务处理过程中所做全部处理。
15.SQLCONNECT([DataSourceName,cUserID,cPassword|cConnectionName])DataSourceName指定ODBC.ini文件中定义的数据源的名称;
cUserID注册到数据源的用户名称;
cPassword资料源用户口令;
cConnectionName由CREATE CONNECTION创建的命名连接.
数值型正整数执行成功;
-1出现连接层错误;
-2出现环境层错误.
16.SQLSTRINGCONNECT([cConnectString])
cConnectStringODBC驱动器所要求的数据源连接串,
Visual FoxPro将连接串传递给ODBC驱动器.
数值型 正整数执行成功;
-1出现连接层错误;
-2出现环境层错误.
17.SQLDISCONNECT(nConnectHandle)
nConnectionHandle连接句柄.
数值型 1执行成功;
-1出现连接层错误;
-2出现环境层错误.
18.SQLGETPROP(nConnectionHandle,cSetting)
nConnectionHandle连接句柄;
cSetting连接属性名称. 数值型 1执行成功;
-1出现连接层错误;
-2出现环境层错误.
19.SQLSETPROP(nConnectionHandle,cSetting[,eExpression])
nConnectionHandle连接句柄;cSetting连接属性名称;
eExpression连接属性参数值.
数值型 1执行成功;
-1出现连接层错误;
-2出现环境层错误.
20.SQLPREPARE(nConnectionHandle,cSQLCommand[,CursorName])
nConnectionHandle连接句柄;
cSQLCommand传递到数据源的SQL语句;
CursorName存放结果集的光标名称,缺省光标名SQLRESULT.
数值型 1执行成功;
-1出现连接层错误;
-2出现环境层错误.
21.SQLEXEC(nConnectionHandle[,cSQLCommand[,CursorName]])
nConnectionHandle连接句柄;
cSQLCommand传递到数据源的SQL语句;
CursorName存放结果集的光标名称,缺省光标名SQLRESULT.
数值型 1执行成功;
-1出现连接层错误;
-2出现环境层错误.
22.SQLCANCEL(nConnectionHandle)
nConnectionHandle连接句柄.
数值型 1执行成功;
-1出现连接层错误;
-2出现环境层错误.
23.SQLMORERESULTS(nConnectionHandle)
nConnectionHandle连接句柄.
数值型 2已经没有资料;
1执行成功;
-1出现连接层错误;
-2出现环境层错误.
24.SQLCOLUMNS(nConnectionHandl,Tablename[,"FOXPRO"|"NATIVE"]
[,CursorName])
nConnectionHandle连接句柄;
TableName返回其列名的表的名称;
FOXPRO|NATIVE列信息的格式;
CursorName存放结果集的光标名称,
缺省游标名SQLRESULT.
数值型 1执行成功;
-1出现连接层错误;
-2出现环境层错误.
25.SQLTABLES(nConnectionHandle[,cTableTypes][,cCursorName])
nConnectionHandle连接句柄;
cTableTypes指定一个或几个表类型,
类型有'TABLE','VIEW','SYS TEM TABLE'或者数据源特定的合法的表类型标识符,必须大写,
若多个类型,各类型间以逗号分隔;
CursorName存放结果集的光标名称,
缺省游标名SQLRESULT.
数值型 1执行成功;
-1出现连接层错误;
-2出现环境层错误.
26.SQLCOMMIT(nConnectionHandle)
nConnectionHandle连接句柄.
数值型 1执行成功;
-1出现连接层错误;
-2出现环境层错误.
27.SQLROLLBACK(nConnectionHandle)
nConnectionHandle连接句柄.
数值型 1执行成功;
-1出现连接层错误;
-2出现环境层错误.
这下头才真正的大了吧,继续看吧。
不必刻意的去记这些,因为VFP9有智能感应,我现在根本不去记那些属性之类的,用VFP的智能感应,又快又准确~~~~~~
把上面的函数归纳一下,常用的如下:
连接函数
连接建立函数:SqlConnect(),SqlStringConnect()
连接的断开函数:SqlDisconnect()
核心的执行函数
SQL语句传输及执行函数:SqlExec(),SqlPrapare()
批次模式下更多数据集的取得函数:SqlMoreResults()
异步模式下撤销正在执行的SPT的函数:SqlCancel()
事务处理函数
SqlCommit(),SqlRollBack()
连接通道属性函数
SqlGetProp(),SqlSetProp()
数据源的信息截取函数
SqlTables(),SqlColumns()
(待续,时间有限,工作太心,才写了一个开头,就已经十几页了,先发一点点上来)
[此贴子已经被作者于2007-1-1 9:04:55编辑过]