编程论坛's Archiver

fown 发表于 2006-9-5 21:35

一步一步的教你做C/S[20070101更新]

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

linwm 发表于 2006-9-5 22:33

期待中。。。<BR>[em25]

haibohuang 发表于 2006-9-5 22:40

<P>3Q</P>
[align=right][color=#000066][此贴子已经被作者于2006-9-6 8:54:06编辑过][/color][/align]

btchongzi 发表于 2006-9-6 08:51

斑竹!太好了

lndsqfyq 发表于 2006-9-6 15:24

非常感谢我就需要这个现在。

vfp_yang 发表于 2006-9-7 10:52

极力支持FOWN!当之不愧的斑竹!!!!强力支持!!!!一定要出书!一直以来都用VFP,常被人家说这是过时的东西,现在终于有组织了,有问题再问斑竹啊!支持

lidong001 发表于 2006-9-7 11:15

我已经在这问题上彷徨了大半年了!<BR>期待中。。。

fown 发表于 2006-9-7 18:36

今天上午在单位写了一些,因为手头上有账要查,还有给一个朋友的程序要写,今天刚参加完电视台的节目录制,比较忙,尽量写吧,已经写了快三十页了

wzxc 发表于 2006-9-7 20:34

to fown 版主:<BR>首先向你道一声:辛苦了。<BR>学习网络编程,我早有这个意向,也看过一本书,不过很简单,不得要领。论坛上大家都有这个要求,所以您的这个帖子太及时了。您在百忙之中,辛勤耕耘在这个论坛上,不计名利,不辞劳苦,钦佩!!!<BR>向您提个建议,本贴希望大家不要跟帖,把您的大作一帖到底,连贯起来,就是一篇好教材,就是一本好书。<BR>大家有何问题,可以另外发表帖子讨论。<BR>包括我这贴,删掉。不知当否?

fown 发表于 2006-9-7 21:39

不用,至于贴子我自己有办法

nhygm 发表于 2006-9-11 23:06

fown   你好  <BR><BR>我想学网络编程 很长时间了   就是不知道从什么地方开始  <BR><BR>单机版的 小程序 我还能写  就是不知道 网络的 怎么办   <BR><BR>希望斑竹 辛苦一点  把你写的 贴出来  谢谢谢谢<BR><BR>

冰山一角 发表于 2006-9-13 12:15

[em01]

lndsqfyq 发表于 2006-9-19 08:26

老大,快点发啊,期待ing。。。。。。。。。。。。。。。。。。。。

lpflpf 发表于 2006-9-23 09:22

我们等到花儿也谢了<BR><a href="mailto:yugongrj@yahoo.com.cn" target="_blank" >yugongrj@yahoo.com.cn</A>

fown 发表于 2006-9-23 17:58

273:12?没心情写

nhygm 发表于 2006-9-27 19:27

老大  快点写吧   我要急死了  呵呵  期待中......................

masachik 发表于 2006-10-11 17:48

<P>[em04][em02][em24][em25][em34]</P>

水月洞天 发表于 2006-10-12 08:34

新手 期待中<BR>

akwang43 发表于 2006-10-24 20:11

怎么没有继续呢?斑竹继续阿<BR>急!!!!!

chen1004 发表于 2006-10-27 08:05

继续啊,老大。

页: [1] 2

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.