分享

VFP的13个SPT函数 - 信息学奥赛(NOIP)资源站 和另外 5 个页面 - 个人

 yzjqrz 2022-02-12

VFP的13个SPT函数

Visual FoxPro 中内置了13个以SQL开头的函数,我们把它们称为SPT函数。就是这13个函数完成了Visual FoxPro的所有的SQL Pass Though功能。从功能上看,我们可以把它们分成五个部分:

一、连接函数:

连接建立函数:SqlConnect(),SqlStringConnect() 连接的断开函数:SqlDisconnect()

二、核心的执行函数:

SQL语句传输及执行函数:SqlExec(),SqlPrapare() 批次模式下更多数据集的取得函数:SqlMoreResults() 异步模式下撤销正在执行的SPT的函数:SqlCancel()

三、事务处理函数:

SqlCommit(),SqlRollBack()

四、连接通道属性函数:

SqlGetProp(),SqlSetProp()

五、数据源的信息截取函数:

SqlTables(),SqlColumns()

用法:SQLEXEC(nConnectionHandle, [cSQLCommand, [cCursorName]]) 例:

SQLEXEC(hconn,"SELECT * FROM EMPLOYEES","MyCursor")
Browse

例:SQLEXEC(hconn,"") &&一个空的命令发送,返回1的话证明连接可用! 传递变量的方法: 1)第一种是利用:问号+变量;本方法不用担心变量的类型。 2)第二种是用TransForm()将变量合并到语句中。

六、把数据集设为可更新:

Visual FoxPro的游标类型:只读游标、可读写游标、可更新游标

1) 只读游标是那种不能被修改的游标,在VFP中使用SQL-Select语句产生的游标就是典型的只读游标;如:SELECT * FROM ORDERS INTO CURSOR MYCURSOR

2) 可读写游标是那种可以进行读写操作,但游标上的数据变更不被反映到数据源的游标; A、一是用SQLEXEC()得到的游标; B、第二是VFP7以上的SQL-Select语句加入关键字readwrite产生的游标; 如:SELECT * FROM ORDERS INTO CURSOR MYCURSOR READWRITE C、第三是“没有设置发送更新”的本地视图和远程视图;(SendUpdate属性为.F.)

3) 可更新游标是那种可以进行读写操作,并且任何数据变动都会反映到数据源的游标; 典型的可更新游标就是可更新视图

把SQLEXEC()得到的结果集设定为可更新游标的五大步骤:

    A. CURSORSETPROP("TABLES",数据源表名,可更新游标名)
    B. CURSORSETPROP("KEYFIELDLIST",关键字段,可更新游标名)
    C. CURSORSETPROP("UPDATABLEFIELDLIST",可更新字段列表,可更新游标名)
    D. CURSORSETPROP("UPDATENAMELIST",前后段字段对应关系列表,可更新游标名)
    E. CURSORSETPROP("SENDUPDATES",.T.,可更新游标名)

七、一个很重要的属性——WhereType

当我们设定结果集为可更新游标后,还有一个重要的属性没有设定,就是WhereType。即,Where字句产生的依据,有四种情况:

CURSORSETPROP("WhereType" ,1) &&根据关键字
CURSORSETPROP("WhereType" ,2) &&根据关键字+可更新字段
CURSORSETPROP("WhereType" ,3) &&根据关键字+已更新字段
CURSORSETPROP("WhereType" ,4) &&根据关键字+时间戳
如:cnn=SQLCONNECT("northwind")
SQLEXEC(cnn,"select categoryid as id ,categoryname,description from categories","mycursor")
SELECT mycursor
CURSORSETPROP("Tables","categories","mycursor")
CURSORSETPROP("KeyFieldList","id","mycursor")
CURSORSETPROP("UpdatableFieldList" ,"id,categoryname,description","mycursor")
CURSORSETPROP("UpdateNameList","id categories.categoryid,categoryname categories.categoryname,"+ "description categories.description","mycursor")
CURSORSETPROP("SendUpdates" ,.t.,"mycursor")
CURSORSETPROP("WhereType" ,3)

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多