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)

VFP的13个SPT函数的更多相关文章

  1. js进阶 13 jquery动画函数有哪些

    js进阶 13 jquery动画函数有哪些 一.总结 一句话总结: 二.jquery动画函数有哪些 原生JavaScript编写动画效果代码比较复杂,而且还需要考虑兼容性.通过jQuery,我们使用简 ...

  2. python 13 内置函数2

    目录 内置函数(二) 匿名函数 内置函数(三) 闭包 内置函数(二) abs() #返回绝对值--返回的是正数 enumerate("可迭代对象","序号起始值" ...

  3. MySQL基础之第13章 MySQL函数

    13.1.数学函数 随机数可能会用到,其他基本无视. 13.2.字符串函数 重点CONCAT(S1,S2….) 13.3.日期和时间函数 一.MySQL 获得当前日期时间 函数 1.1 获得当前日期+ ...

  4. Linux学习笔记13——使用curses函数库

    一 安装curses库 如果你的Linux系统中curses库,直接敲入命令sudo apt-get install libncurses5-dev,然后就会自动安装curses库,安装好之后敲入命令 ...

  5. python note 13 内置函数

    1. lst = ["白蛇传","骷髅叹","庄周闲游"] it = lst.__iter__() print(it.__next__()) ...

  6. python --- 13 内置函数

    内置函数 思维导图 1.作用域相关 locals()     返回当前作用域中的名字 globals()  返回全局作用域中的名字 2.迭代器相关 range()     生成数据 next()    ...

  7. 我的第一个python web开发框架(13)——工具函数包说明(四)

    string_helper.py是字符串操作包,主要对字符串进行检查.过滤和截取等处理. #!/usr/bin/evn python # coding=utf-8 import re def chec ...

  8. python入门(13)获取函数帮助和调用函数

    Python内置了很多有用的函数,我们可以直接调用. 要调用一个函数,需要知道函数的名称和参数,比如求绝对值的函数abs,只有一个参数.可以直接从Python的官方网站查看文档: http://doc ...

  9. [c/c++] programming之路(13)、函数

    一.函数 #include<stdio.h> //stdio.stdlib标准库 #include<stdlib.h> //代码重用, 函数的诞生,C语言主要是函数组成 //写 ...

随机推荐

  1. Jaeger容器化部署

    概述 Jaeger是由Uber开源的分布式追踪系统,一套完整的Jager追踪系统包括Jaeger-client.Jaeger-agent.Jaeger-collector.Database和Jaege ...

  2. 七彩线段 - 装压dp (牛客网)

    题目描述听说彩虹有七种颜色?一维坐标轴上n条线段,每条线段左端点l,右端点r,颜色为c,从中选m种颜色的互不接触的线段,每种颜色可选多条,所选线段的总长度最长为多少?输入描述: 第一行2个整数 n, ...

  3. 一文带你看清HTTP所有概念

    上一篇文章我们大致讲解了一下 HTTP 的基本特征和使用,大家反响很不错,那么本篇文章我们就来深究一下 HTTP 的特性.我们接着上篇文章没有说完的 HTTP 标头继续来介绍(此篇文章会介绍所有标头的 ...

  4. Django HttpResponse、render、redirect

    一.HttpResponse 作业:返回相应的内容 格式: return HttpResponse("Hello, World") 二.render 作业:提交网页和字符串替换 提 ...

  5. ORM基础5

    一.一对一 场景:字段多,且一部分字段使用率高 优点:提高效率 实质:唯一的外键 # Person表 class Person(models.Model): id = models.AutoField ...

  6. [LOJ#3044][动态DP]「ZJOI2019」Minimax 搜索

    题目传送门 容易想到一种暴力 DP:先转化成对于每个 \(k\) 求出 \(\max_{i\in S}|i-w_i|\le k\) 的方案数,最后差分 然后问题转化成每个叶子的权值有个取值区间,注意这 ...

  7. Python处理URL编码

    我们在访问网站时,有很多连接都是有一些特殊符号组成,例如,我在百度搜索“大鱼海棠”,结果可以看到它的搜索出来的链接是: https://www.baidu.com/s?wd=%E5%A4%A7%E9% ...

  8. Linux系统实时数据同步inotify+rsync

    一.inotify简介 inotify是Linux内核的一个功能,它能监控文件系统的变化,比如删除.读.写和卸载等操作.它监控到这些事件的发生后会默认往标准输出打印事件信息.要使用inotify,Li ...

  9. Kivy Event 在哪里?

    kivy 程序都是都需要继承APP基类 而App类在Lib\site-packages\kivy\app.py文件定义 from kivy.event import EventDispatcher c ...

  10. ffplay的使用

    https://www.cnblogs.com/renhui/p/8458802.html