• 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)

  • 相关阅读:
    POJ 3280 Cheapest Palindrome
    POJ 1191 棋盘分割
    POJ 1260 Pearls
    HDOJ 4731 Minimum palindrome
    2013 ACM/ICPC Asia Regional Chengdu Online 1004 Minimum palindrome
    POJ 1836 Alignment
    POJ 3267 The Cow Lexicon
    POJ 1276 Cash Machine
    POJ 1837 Balance
    HDU 4554 叛逆的小明
  • 原文地址:https://www.cnblogs.com/hnllhq/p/12293566.html
Copyright © 2020-2023  润新知