您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > vfp+sql使用方法
VFP因它简单易学,可快速建立应用软件而深受广大程序员喜爱,但其数据库系统不安全也是令广大用户非常头痛。随着MSSQLSERVER数据库系统的推广应用,其强大的安全性能普遍受到好评。笔者在长期的编程实践中发现利用VFP的SQLPASS-THROUGH(SPT)技术结合MSSQLSERVER数据库系统,也能象VB、DELPHI、POWERBUILDER一样轻松开发出优秀的客户/服务器(C/S)应用软件。现通过编写一个简单的通信录例子和广大VFP爱好者共同探讨。一、服务器端MSSQLSERVER数据库设计1、在MSSQLSERVER中建立名为“SFXT”的数据库。2、在SFXT数据库中建立名为“通信录”的表,结构如下:列名(字段名)数据类型长度姓名CHAR8生日DATETIME8电话CHAR11EMAILCHAR30并将姓名设置为主键3、在SFXT数据库中建立查询出所有记录的存储过程SP_SEARCHALLCREATEPROCEDURE[SP_SEARCHALL]ASSELECT*FROM通信录ORDERBY姓名RETURN4、在SFXT数据库中建立插入新记录的存储过程SP_INSERTDATACREATEPROCEDURE[SP_INSERTDATA]@NAME[CHAR](10),@BIRTHDAY[DATETIME],@TELEPHONE[CHAR](11),@EMAIL[CHAR](30)ASINSERTINTO通信录(姓名,生日,电话,EMAIL)valueS(@NAME,@BIRTHDAY,@TELEPHONE,@EMAIL)RETURN二、客户端VFP的SQLPASS-THROUGH技术设计1、建立VFP表单界面,按钮内容如下建立ODBC数据源建立连接方式1建立连接方式2活动连接属性设置执行存储过程查询数据执行SQL语句查询数据向存储过程传替参数插入新记录设置当前表的属性修改数据断开指向数据源的连接退出程序2、建立名为SFXT的ODBC数据源连接MSSQLSERVER中的SFXT数据库可通过执行上面VFP表单的按钮建立ODBC数据源来完成;或者通过运行WINDOWS控制面板中的ODBC数据源来完成,主要设置包括选择SQLSERVER驱动程序,通信协议,登录标识与密码等。建立ODBC数据源按钮的CLICK事件:*函数说明SQLSTRINGCONNECT([CCONNECTSTRING])*省略连接字符串CCONNECTSTRING时显示SQL数据源对话框,可选择或新建数据源。SQLSTRINGCONNECT()3、两种连接MSSQLSERVER数据源的方式。使用现有数据源名称建立连接,建立连接方式1按钮CLICK事件:PUBLICVODBC,VUSER,VPWD,VCONNVODBC='SFXT'&&连接SQLSERVER数据库ODBC数据源名称VUSER='SA'&&访问SQLSERVER数据库的登录用户名,SA为系统用户VPWD='5213'&&用户登录密码,为SA系统用户设置的密码VCONN=SQLCONNECT(VODBC,VUSER,VPWD)IFVCONN0MESSAGEBOX('连接成功!',64,'ODBC数据源')ELSEMESSAGEBOX('连接失败!',64,'ODBC数据源')ENDIF使用连接字符串建立数据源连接,“建立连接方式2”按钮CLICK事件:PUBLICVCONNVCONN=SQLSTRINGCONNECT('DSN=SFXT;UID=SA;PWD=5213')IFVCONN0MESSAGEBOX('连接成功!',64,'ODBC数据源')ELSEMESSAGEBOX('连接失败!',64,'ODBC数据源')ENDIF4、数据源连接的主要参数设置,“活动连接属性设置”按钮CLICK事件:*注:用函数SQLGETPROP()可返回设置的参数SQLSETPROP(VCONN,ASYNCHRONOUS,.F.)&&取假值时结果为同步返回,取真值时为异步返回SQLSETPROP(VCONN,CONNECTTIMEOUT,15)&&连接超时等待秒数设置,可取值0至600SQLSETPROP(VCONN,IDLETIMEOUT,0)&&空闲超时间隔秒数,取0为无限期等待SQLSETPROP(VCONN,TRANSACTIONS,1)&&取1时为自动处理远程事务,取2为手工处理5、执行存储过程查询数据按钮CLICK事件:*函数说明SQLEXEC(NCONNECTIONHANDLE,[CSQLCOMMAND,[CURSORNAME]])*NCONNECTIONHANDLE当前数据源活动连接句柄*CSQLCOMMAND执行SQLSERVER存储过程的SQL语句表达式*CURSORNAME返回执行结果临时表的名称SQLEXEC(VCONN,EXECUTESP_SEARCHALL,我的通信录)BROWSE6、执行SQL语句查询数据按钮CLICK事件:*函数说明SQLEXEC(NCONNECTIONHANDLE,[CSQLCOMMAND,[CURSORNAME]])*NCONNECTIONHANDLE当前数据源活动连接句柄*CSQLCOMMAND执行SQLSERVER存储过程的SQL语句表达式*CURSORNAME返回执行结果临时表的名称SQLEXEC(VCONN,SELECT*FROM通信录,我的通信录)BROWSE7、向存储过程传替参数插入新记录按钮CLICK事件:LOCALVNAME,VBIRTHDAY,VTELEPHONE,VEMAIL,VSQL*随机产生新记录举例VNAME='姓名'+SYS(3)&&姓名VBIRTHDAY=DTOC(DATE()-INT(RAND()*10000))&&生日VTELEPHONE=SYS(3)&&电话VEMAIL=SYS(3)+'@HOTMAIL.COM'&&电子邮箱*将传递到存储过程的参数转换成字符串,并加引号形成SQL语句VSQL=EXECUTESP_INSERTDATA+'+VNAME+','+VBIRTHDAY+','+VTELEPHONE+','+VEMAIL+'IFSQLEXEC(VCONN,VSQL)0MESSAGEBOX('插入记录成功!',64,'信息')ELSEMESSAGEBOX('插入记录失败!',64,'信息')ENDIFSQLEXEC(VCONN,EXECUTESP_SEARCHALL,我的通信录)BROWSE8、设置当前表的属性修改数据按钮CLICK事件:*注:用函数CURSORGETPROP()可返回设置的参数CURSORSETPROP('BATCHUPDATECOUNT',100)&&发送到缓冲表的远程数据源的更新指令的数目CURSORSETPROP('BUFFERING',3)&&设置当前表为开放式行缓冲CURSORSETPROP('FETCHSIZE',-1)&&从远程表中提取全部查询记录CURSORSETPROP('KEYFIELDLIST','姓名')&&指定远程表的主关键字段CURSORSETPROP('SENDUPDATES',.T.)&&当前缓冲表更改内容时发送SQL语句更新远程表CURSORSETPROP('TABLES','通信录')&&指定连接的远程表名*本地缓冲表与远程表字段对应关系CURSORSETPROP('UPDATENAMELIST','姓名通信录.姓名,生日通信录.生日,电话通信录.电话,;EMAIL通信录.EMAIL')*指定可更新字段列表CURSORSETPROP('UPDATABLEFIELDLIST','姓名',生日,电话,EMAIL')CURSORSETPROP('UPDATETYPE',1)&&远程表更新方式,替换方式CURSORSETPROP('WHERETYPE',3)&&更新SQL语句中WHERE子句包含主关键字与被修改过的字段BROWSE&&修改缓冲表数据,移动记录指针后,自动发送SQL语句更新远程库9、断开指向数据源的连接按钮CLICK事件:SQLDISCONNECT(VCONN)10、退出程序按钮CLICK事件:THISFORM.RELEASE
本文标题:vfp+sql使用方法
链接地址:https://www.777doc.com/doc-2866221 .html