首先,车同学理解的CURSOR表本身就有偏差,导致后续的理解不正确,CURSOR表是临时表,用作远程表和链接表只是一方面的应用,但是他本身是当做临时表存在的。
临时表的使用范围很广,主要用于过渡表,机制就是先在内存产生,然后在磁盘镜像,使用临时表的好处就是不用考虑表放在磁盘的哪个位置,后续怎么处理,全部交给vfp本身。
如果程序是配合远端数据库使用的话,那尽量用临时表,这样就可以做到“片叶不沾身”的效果,也可以实现多开客户端的功能,如果过渡表是使用dbf的实际表,那多开客户端首先就面临实际表冲突的可能,当年我不会使用临时表的时候,为了能多开客户端,着实为了处理这个实际表头疼了一阵。
临时表确实好用,而且确实存在于内存,这个在内存的开销中可以很容易的看出来,做个简单的实验就可以:开100个各自含有1万条数据的临时表和开100个各自含有1万条数据的dbf所使用的内存开销是不一样的。
实际上,数组也是一个表,和临时表性质是一样的,只是运作机理略有不同,数组是foxpro从c那边学来的。
虽然vfp已经老旧,好多东西不支持,但为什么好用,就是3大法宝:
1.本身有数据表(table)不像c没有,只能使用数组,或者干脆去远端操作数据库。
2.本身支持sql语言,虽然和mssql略有不同,但是谁能说mssql就是标准了?mysql和oracle就不同意。你可以直接在本地欢乐地使用sql语言操作数据,不用去远端搞,要知道以现在的pc性能,好多小数据处理可以直接在本地弄的。
3,支持各种api,fll,ocx,甚至多任务多线程,而且嵌合度比较高,使用起来很顺滑,可以弥补自身老旧的问题。
总之,小小临时表的设计就可以知道当年微软大哥是想把他搞大的,然而后来发现sql更香。前后差了2年就发现sybase更好谈,fox这边太执着,所以就放弃使用vfp搞大型数据库了呗,但是vfp好用是事实,所以微软也是很良心的给vfp留了很多的财富。
[此贴子已经被作者于2025-7-17 00:17编辑过]