您现在的位置: 中国男护士网 >> 考试频道 >> 计算机等级 >> 二级辅导 >> 正文    
  VFP与SQL远程异构数据库 【注册男护士专用博客】          

VFP与SQL远程异构数据库

www.nanhushi.com     佚名   不详 

  熟悉 VFP的朋友都知道,在 VFP 里我们可以使用远程视图 (Remote View) 和 SPT(SQL Pass Through) 技术控制远程异构数据库。这些技术其实是 VFP 对 ODBC 的 API 的封装,所以对于用户来说访问远程数据库就像操作传统的DBF一样简单。关于这两种技术的使用,完全可以洋洋洒洒地写下一本书,鉴于本文主题及篇幅,这里仅枚举 SPT 技术访问远程数据的应用。

    很多人认为有了远程视图这样直观、简单的工具,为什么还需要 SPT 呢?确实 SPT 较远程视图难以掌握,但细细体会你会发现:远程视图其实是对 SPT 的可视化工具!SPT 较远程视图更具威力,远程视图提供的功能只是 SPT 的一个子集。其优势和劣势主要体现在以下几个方面:

  l、SPT 的优势

  1) 一次得到多个Cursor;

  2) 执行除 Select 以外的其他 SQL 语句,如 Insert、Update、Delete等;

  3) 执行远程数据库的存储过程 ;

  4) 执行远程数据库的特殊函数、命令等 ;

  5) 事务管理 。

  2、SPT 的劣势

  1) 没有图形用户界面;

  2) 必须人工维护连接;

  3) 得到的Cursor默认是“可读写”Cursor,要使它成为“可更新”Cursor必须经过设置才行。

  下面就顺着我们对 SPT 的认识,来浏览一下这个伟大的工具吧!(注意:本文所有例程均使用 SQL Server的NorthWind 数据库演示)。

  管理连接

  l、建立连接

  注意:本文所有示例的代码若用到连接的,默认采用“建立连接”代码中产生的连接句柄 “CON”。

  WAIT ' 连接到 SQL Server 上去 ' NOWAIT NOCLEAR WINDOW

  SQLSETPROP(0,"DispLogin" ,3) &&&& 设置环境为“从不显示 ODBC 登录对话框”。

  CON=SQLSTRINGCONNECT("driver=SQL Server;Server=BOE;Uid=sa;pwd=;database=northwind")

  *假定 SQL Server 服务器名为 BOE, 用户 ID 是sa, 口令是空串

  *如果你的 SQL Server 的服务器名, 用户 ID, 口令与上不同,请修改以上代码中的相关部分以符合你系统中的设置

  WAIT clear

  IF con<=0

  MESSAGEBOX(' 连接失败 ',64,' 连接到 SQL Server 上去 ')

  ELSE

  MESSAGEBOX(' 连接成功 ',64,' 连接到 SQL Server 上去 ')

  ENDIF

  2、断开连接

  SQLDISCONNECT(CON)

  一次得到多个Cursor

  我们可以用一次 SPT 传回多个Cursor,如下:

  cSQL="SELECT * FROM EMPLOYEES"+CHR(10)+"SELECT * FROM CUSTOMERS"+CHR(10)+"SELECT * FROM PRODUCTS"

  ?SQLEXEC(con,cSQL,"TEMP")

  SQLEXEC( ) 的返回值表示Cursor的数量,这里返回 3 。这三个Cursor分别以 TEMP、TEMP1和TEMP2 命名。

  执行其他 SQL 语句

  下面我们尝试执行SQL Server以外的SQL语句:

  cSQL="IF EXISTS(SELECT * FROM CUSTOMERSswheres CUSTOMERID='TEST')"

  cSQL=cSQL+" DELETE FROM CUSTOMERSswheres CUSTOMERID='TEST'" cSQL=cSQL+" ELSE INSERT CUSTOMERS(CUSTOMERID,COMPANYNAME) VALUES('TEST',' 这是一个测试! ')"

  IF SQLEXEC(CON,cSQL)<=0

  MESSAGEBOX(' 执行失败 ',64,' 发送语句到 SQL Server 上去 ')

  ELSE

  MESSAGEBOX(' 执行成功 ',64,' 发送语句到 SQL Server 上去 ')

  ENDIF

  行文至此,也许有朋友会问:如果 SQL 语句中 CUSTOMERID 是一个变量怎么办呢?其实 我们可以通过两个常用的解决方案来解决:

 

文章录入:杜斌    责任编辑:杜斌 
  • 上一篇文章:

  • 下一篇文章:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
     

    联 系 信 息
    QQ:88236621
    电话:15853773350
    E-Mail:malenurse@163.com
    免费发布招聘信息
    做中国最专业男护士门户网站
    最 新 热 门
    最 新 推 荐
    相 关 文 章
    2011年护士资格考试:考…
    2009年初级护士资格考试…
    2009年主管护师考试于12…
    2009年初级护士考试于12…
    2009年初级护师考试于12…
    石家庄市关于2009年度护…
    2009年护士专业技术资格…
    医护技能考试周末举行 4…
    护士“托福”今年7月开考
    护士“托福”考试开始报…
    专 题 栏 目