EndScan *** 要得到SQL SERVER上某个表的结构,有两种办法,一是运行SQL SERVER自带的系统存储过程。一是运行一个Select命令。 比如要从SQL SERVER得到EMP表的结构 lnReturn=SQLEXEC(连接句柄,"Select Top 0 * From Emp","TmpEmp") 返回的结果都是临时表,是只读的,要想变成可读写的,需要做点小变化: Select 0 Use DBF("TmpEmp") Again Alias Emp Use In TmpEmp 现在得到的EMP临时表就是可读写的了。 *注 "Select Top 0 From Emp" 命令在VFP里是错误命令,但SQL SERVER里可以执行. SPT和使用视图相比,优点是每一步你都清楚自己在做什么,知道为什么命令会出错。缺点是你需要多写命令,多了解SQL SERVER的语法。 *************** 谈谈VFP和SQL SERVER搭配做C/S系统 (五) --从VFP控制SQL SERVER事务处理和加锁 **建立与SQL SERVER的连接 lnHandle=SQLConnect("ODBC数据源","用户名","密码") If lnHandle>0 && 设置成手工事务处理模式,由代码来控制 = SQLSETPROP(lnSQL_Hand, ’Transactions’, 2) **下面的命令从EMPPAY里选取记录,并给该表加上独占锁(TABLELOCKX),一直到该事务结束(HOLDLOCK) ln1=SQLEXEC(lnHandle, "Select * FROM EmppayWITH (TABLOCKX, HOLDLOCK)","Emppay") **执行其它命令,比如更新数据 ln2=SQLEXEC(lnHandle,"Update PayTotal Set ......") ... ... **如果所有命令都正确执行了,则 =SQLCOMMIT(lnHandle) ***如果要放弃整个事务处理,用 =SQLROLLBACK(lnHandle) ***关闭连接,事务自动结束,锁也解开 =SQLDISCONNECT(lnHandle) Else ****连接失败 EndIf *** SQLSETPROP()函数 这个VFP函数是用来设置当前连接的属性的。 比如上边的手工事务处理。 还有一个比较常用的属性是DISPLOGIN,该属性控制是否显示SQL SERVER的登录表单 第3个参数: 1 - 显示登录表单,如果登录信息(用户名,密码)不完全2 - 总显示登录表单3 - 不显示登录表单 例如: =SQLSETPROP(lnHandle, "DISPLOGIN",1) 当使用SPT技术时,为节约连接数减少负担,需要经常连接和断开SQL SERVER,有时候你并不希望每次连接都让用户登录,当用户首次登录后,可以把名字和密码存起来,以后的连接可以自动登录了。 *************** 谈谈VFP和SQL SERVER搭配做C/S系统 (六) -- SQL SERVER的索引 作为VFP程序员,我们深知索引对表的重要性,好的索引可以大大缩短程序读取数据的时间。 索引对于SQL SERVER数据表来说,同样是很重要的。你可以做个简单的测试。 1. 索引测试 从SQL SERVER程序组里或者ENTERPRISE MANAGER的TOOLS菜单上打开QUERY ANALYZER工具. 连接到你的SERVER后, 选择QUERY菜单上的CURRENT CONNECTION OPTIONS(当前连接选项).
|