VFP中用SPT访问SQL Server数据库

到底谁的责任nm

到底谁的责任nm

2016-02-19 19:16

今天图老师小编要跟大家分享VFP中用SPT访问SQL Server数据库,精心挑选的过程简单易学,喜欢的朋友一起来学习吧!

  VFP因它简单易学,可快速建立应用软件而深受广大程序员喜爱,但其数据库系统不安全也令广大用户非常头痛。随着MS SQL Server数据库系统的推广应用,其强大的安全性能普遍受到好评。笔者在长期的编程实践中,发现利用VFP的SQL pass-through(SPT)技术结合MS SQL Server数据库系统,也能像VB、Delphi、PowerBuilder一样轻松开发出优秀的客户/服务器(C/S)应用软件。现通过编写一个简单的通信录例子和广大VFP爱好者共同探讨。

  一、服务器端MS SQL Server数据库设计

  1. 在MS SQL Server中建立名为“SFXT”的数据库。

  2. 在SFXT数据库中建立名为“通信录”的数据表,表结构如下:

  列名(字段名) 数据类型   长度

  姓名 chr 8

  生日 datetime 8

  电话 chr 11

  email chr 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. 建立如(^15020603b^)的VFP表单界面。

  2. 建立名为“SFXT”的ODBC数据源连接MS SQL Server中的SFXT数据库。

  可通过执行上面VFP表单的按钮“建立OBDC数据源”来完成;或者通过运行Windows控制面板中的“OBDC数据源”来完成。主要设置包括选择SQL Server驱动程序,通信协议,登录标识与密码等。

  “建立OBDC数据源”按钮.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 vconn0
  messagebox('连接成功!',,'ODBC数据源')
  else
  messagebox('连接失败!',,'ODBC数据源')
  endif

  使用连接字符串建立数据源连接,“建立连接方式2”按钮.CLICK事件。

 public vconn
  vconn=SQLSTRINGCONNECT('dsn=sfxt:uid=sa:pwd=5213')
  if vconn0
  messagebox('连接成功!',,'ODBC数据源')
  else
  messagebox('连接失败!',,'ODBC数据源')
  endif

  4. 数据源连接的主要参数设置,“活动连接属性设置”按钮.CLICK事件。

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)

  * 注:用函数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语句表达式
  *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     &&发送SQL语句
  messagebox('插入新记录成功!',,'信息')
  else
  messagebox('插入新记录不成功!',,'信息')
  endi
  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

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)

  以上我们利用VFP的SQL pass-through技术编写了一个简单的通信录管理程序,实现对SQL Server数据库中数据的插入、查询、修改等基本功能,是一个典型的客户/服务器(C/S)结构的应用程序。希望对读者今后开发软件有所帮助。

展开更多 50%)
分享

猜你喜欢

VFP中用SPT访问SQL Server数据库

编程语言 网络编程
VFP中用SPT访问SQL Server数据库

通过HTTP访问SQL Server 2000数据库

SQLServer
通过HTTP访问SQL Server 2000数据库

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

用DELPHI编程访问SQL SERVER数据库

Delphi
用DELPHI编程访问SQL SERVER数据库

在Linux下访问MS SQL Server数据库

SQLServer
在Linux下访问MS SQL Server数据库

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

VB访问SQL Server数据库技术全揭密

SQLServer
VB访问SQL Server数据库技术全揭密

SQL Server数据库检修

SQLServer
SQL Server数据库检修

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

Mac OS X如何安装Win7

Mac OS X如何安装Win7

c/c++中结构体的入门教程

c/c++中结构体的入门教程
下拉加载更多内容 ↓