一步一步的教你做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]
期待中。。。<BR>[em25] <P>3Q</P>
[align=right][color=#000066][此贴子已经被作者于2006-9-6 8:54:06编辑过][/color][/align]
斑竹!太好了 非常感谢我就需要这个现在。 极力支持FOWN!当之不愧的斑竹!!!!强力支持!!!!一定要出书!一直以来都用VFP,常被人家说这是过时的东西,现在终于有组织了,有问题再问斑竹啊!支持 我已经在这问题上彷徨了大半年了!<BR>期待中。。。 今天上午在单位写了一些,因为手头上有账要查,还有给一个朋友的程序要写,今天刚参加完电视台的节目录制,比较忙,尽量写吧,已经写了快三十页了 to fown 版主:<BR>首先向你道一声:辛苦了。<BR>学习网络编程,我早有这个意向,也看过一本书,不过很简单,不得要领。论坛上大家都有这个要求,所以您的这个帖子太及时了。您在百忙之中,辛勤耕耘在这个论坛上,不计名利,不辞劳苦,钦佩!!!<BR>向您提个建议,本贴希望大家不要跟帖,把您的大作一帖到底,连贯起来,就是一篇好教材,就是一本好书。<BR>大家有何问题,可以另外发表帖子讨论。<BR>包括我这贴,删掉。不知当否? 不用,至于贴子我自己有办法 fown 你好 <BR><BR>我想学网络编程 很长时间了 就是不知道从什么地方开始 <BR><BR>单机版的 小程序 我还能写 就是不知道 网络的 怎么办 <BR><BR>希望斑竹 辛苦一点 把你写的 贴出来 谢谢谢谢<BR><BR> [em01] 老大,快点发啊,期待ing。。。。。。。。。。。。。。。。。。。。 我们等到花儿也谢了<BR><a href="mailto:yugongrj@yahoo.com.cn" target="_blank" >yugongrj@yahoo.com.cn</A> 273:12?没心情写 老大 快点写吧 我要急死了 呵呵 期待中...................... <P>[em04][em02][em24][em25][em34]</P> 新手 期待中<BR> 怎么没有继续呢?斑竹继续阿<BR>急!!!!! 继续啊,老大。
页:
[1]
2
