![]() ![]() |
|
VFP中用SPT访问SQLSERVER | |
作者:佚名 文章来源:不详 点击数 更新时间:2008/6/12 21:01:59 文章录入:杜斌 责任编辑:杜斌 | |
|
|
一、服务器端MS SQL SERVER数据库设计 1、在MS SQL SERVER中建立名为“SFXT”的数据库。 2、在SFXT数据库中建立名为“通信录”的表,结构如下: 列名(字段名) 数据类型 长度 姓名 CHAR 8 生日 DATETIME 8 电话 CHAR 11 EMAIL CHAR 30 并将姓名设置为主键 3、在SFXT数据库中建立查询出所有记录的存储过程 SP_SEARCHALL CREATE PROCEDURE [SP_SEARCHALL] AS SELECT * FROM 通信录 ORDER BY 姓名 RETURN 4、在SFXT数据库中建立插入新记录的存储过程 SP_INSERTDATA CREATE PROCEDURE [SP_INSERTDATA] @NAME [CHAR] (10), @BIRTHDAY [DATETIME], @TELEPHONE [CHAR] (11), @EMAIL [CHAR] (30) AS INSERT INTO 通信录(姓名,生日,电话,EMAIL) valueS (@NAME,@BIRTHDAY,@TELEPHONE,@EMAIL) RETURN 二、客户端VFP的SQL PASS-THROUGH技术设计 1、建立VFP表单界面,按钮内容如下 建立ODBC数据源 建立连接方式1 建立连接方式2 活动连接属性设置 执行存储过程查询数据 执行SQL语句查询数据 向存储过程传替参数插入新记录 设置当前表的属性修改数据 断开指向数据源的连接 退出程序 2、建立名为SFXT的ODBC数据源连接MS SQL SERVER中的SFXT数据库 可通过执行上面VFP表单的按钮建立ODBC数据源来完成;或者通过运行WINDOWS控制面板中的ODBC数据源来 完成,主要设置包括选择SQL SERVER驱动程序,通信协议,登录标识与密码等。 建立ODBC数据源按钮的CLICK事件: *函数说明SQLSTRINGCONNECT([CCONNECTSTRING]) *省略连接字符串CCONNECTSTRING时显示SQL数据源对话框,可选择或新建数据源。 SQLSTRINGCONNECT() 3、两种连接MS SQL SERVER数据源的方式。 使用现有数据源名称建立连接,建立连接方式1按钮CLICK事件: PUBLIC VODBC,VUSER,VPWD,VCONN VODBC='SFXT' &&连接SQL SERVER数据库ODBC数据源名称 VUSER='SA' &&访问SQL SERVER数据库的登录用户名,SA为系统用户 VPWD='5213' &&用户登录密码,为SA系统用户设置的密码 VCONN=SQLCONNECT(VODBC,VUSER,VPWD) IF VCONN>0 MESSAGEBOX('连接成功!',64,'ODBC数据源') ELSE MESSAGEBOX('连接失败!',64,'ODBC数据源') ENDIF 使用连接字符串建立数据源连接,“建立连接方式2”按钮CLICK事件: PUBLIC VCONN VCONN=SQLSTRINGCONNECT('DSN=SFXT;UID=SA;PWD=5213') IF VCONN>0 MESSAGEBOX('连接成功!',64,'ODBC数据源') ELSE MESSAGEBOX('连接失败!',64,'ODBC数据源') ENDIF 4、数据源连接的主要参数设置,“活动连接属性设置”按钮CLICK事件: *注:用函数SQLGETPROP()可返回设置的参数 SQLSETPROP(VCONN,"ASYNCHRONOUS",.F.) &&取假值时结果为同步返回,取真值时为异步返回 SQLSETPROP(VCONN,"CONNECTTIMEOUT",15) &&连接超时等待秒数设置,可取值0至600 SQLSETPROP(VCONN,"IDLETIMEOUT",0) &&空闲超 时间隔秒数,取0为无限期等待 SQLSETPROP(VCONN,"TRANSACTIONS",1) &&取1时为自动处理远程事务,取2为手工处理 5、执行存储过程查询数据按钮CLICK事件: *函数说明SQLEXEC(NCONNECTIONHANDLE,[CSQLCOMMAND,[CURSORNAME]]) *NCONNECTIONHANDLE 当前数据源活动连接句柄 *CSQLCOMMAND 执行SQL SERVER存储过程的SQL语句表达式 *CURSORNAME 返回执行结果临时表的名称 SQLEXEC(VCONN,"EXECUTE SP_SEARCHALL","我的通信录") BROWSE 6、执行SQL语句查询数据按钮CLICK事件: *函数说明SQLEXEC(NCONNECTIONHANDLE,[CSQLCOMMAND,[CURSORNAME]]) *NCONNECTIONHANDLE 当前数据源活动连接句柄 *CSQLCOMMAND 执行SQL SERVER存储过程的SQL语句表达式 *CURSORNAME 返回执行结果临时表的名称 SQLEXEC(VCONN," SELECT * FROM 通信录 ","我的通信录") BROWSE 7、向存储过程传替参数插入新记录按钮CLICK事件: LOCAL VNAME,VBIRTHDAY,VTELEPHONE,VEMAIL,VSQL *随机产生新记录举例 VNAME='姓名'+SYS(3) &&姓名 VBIRTHDAY=DTOC(DATE()-INT(RAND()*10000)) &&生日 VTELEPHONE=SYS(3) &&电话 VEMAIL=SYS(3)+'@HOTMAIL.COM' &&电子邮箱 *将传递到存储过程的参数转换成字符串,并加引号形成SQL语句 VSQL="EXECUTE SP_INSERTDATA "+"'"+VNAME+"','"+VBIRTHDAY+"','"+VTELEPHONE+"','"+VEMAIL+"'" IF SQLEXEC(VCONN,VSQL)>0 MESSAGEBOX('插入记录成功!',64,'信息') ELSE MESSAGEBOX('插入记录失败!',64,'信息') ENDIF SQLEXEC (VCONN," EXECUTE SP_SEARCHALL ","我的通信录") BROWSE 8、设置当前表的属性修改数据按钮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 |
|
![]() ![]() |