深入CursorAdapter(二),第1张

深入CursorAdapter(二),第2张

大型计算机等级站布置的检查:

VFP8中新的CursorAdapter基类提供了一个统一且易于使用的数据接口。在本月的文章中,Doug Hennig演示了如何使用CursorAdapter访问本地数据和ODBC、ADO、XML等远程数据,并讨论了使用各种数据源的相应特殊要求和实现方式。

Text:
正如我在上一篇文章中提到的,VFP8中最重要和精彩的新特性之一是新的CursorAdapter基类。在那篇文章中,我们研究了CursorAdapter的属性、事件和方法,并讨论了它相对于远程视图、SQL PassThrough(SPT)、ADO和XML的优势。
在你开始使用CursorAdapter之前,你需要注意这个类根据你是想通过ODBC、ADO还是XML访问本地数据还是远程数据源而有不同的特殊要求。本月的文章描述了使用各种数据源的细节。

使用本地数据源

×××××××××××
虽然我们知道CursorAdapter正在努力标准化和简化访问非VFP数据的方式,但您仍然可以用它来替代Cursor访问VFP数据:只需将其DataSourceType属性设置为“Native”即可。为什么要这么做?因为您的应用程序将来可能需要升级——那时,您可以将DataSourceType属性设置为其他几个选项中的一个(当然,您可能需要修改其他几个属性,例如设置连接信息等。),并且您可以轻松地切换到另一个数据库引擎,如SQL Server。
当DataSourceType属性设置为“本机”时,VFP将忽略其DataSource属性。SelectCmd属性必须是SQL Select语句(而不是USE命令或表达式),这意味着使用CursorAdapter来操作类似于本地视图的东西,而不是直接操作本地表。您还必须确保VFP可以找到出现在该Select语句中的任何表。因此,如果这些表不在当前路径中,那么您需要设置路径或打开这些表所属的数据库。此外,就像使用视图一样,如果希望该游标可更新,还必须设置与更新相关的属性(KeyFieldList、Tables、UpdatableFieldlist和UpdateNameList)。
下面的示例(文章附件NativeExample.prg)将使用VFP示例数据库中的Customer表来构建可更新的游标:
local locator作为游标适配器,la errors[1]
Open database(_ samples+' data \ test data ')
with loCursor
。alias = ' customer customor '
。DataSourceType = 'Native'
。SelectCmd = "Select CUST标识,公司,客户联系人"+
"其中国家= '巴西' "
。KeyFieldList = 'CUST_ID'
。Tables = 'CUSTOMER'
。UpdatableFieldList = 'CUST_ID,公司,联系人'
。UpdateNamelist = 'CUST_ID客户。CUST_ID,'+
'公司客户。公司,联系客户。'联系人'

如果。cursor fill()
browse
table update(1)
else
a error(la errors)
messagebox(la errors[2])
endif。cursor fill()
end with
关闭所有数据库

使用odbc
××××××
odbc是DataSourceType属性的四种设置中最简单的一种。将DataSource设置为打开的ODBC连接句柄,设置公共属性,然后调用CursorFill获取数据。如果您设置了KeyFieldList、Tables、UpdatableFieldList和UpdateNameList的属性,VFP会自动将您对数据所做的任何更改转换为相应的UPDATE、INSERT和DELETE语句,以将更改提交到后台数据源。如果要使用存储过程,请相应地设置*Cmd,* cmdddatasource和* cmdddatasourcetype属性(*代表“删除”、“插入”或“更新”)。
下面是附件ODBCExample.prg中的一个示例,它调用Sql Server的NorthWind数据库中的CustOrderHist存储过程来获取销售给某个客户的产品总数。
local lcConnString,loCursor as CursorAdapter,laErrors[1]
lcConnString = ' driver = SQL Server;server=(本地);数据库= Northwinduid = sapwd =;"+
"trusted_connection=no "

* *将上述连接字符串中的密码更改为您的SQL Server登录密码
locator = createobject(' cursor adapter ')
with locator
。alias = '客户历史'
。DataSourceType = 'ODBC'
。data source = SQLStringConnect(lcConnString)
。select cmd = " exec CustOrderhist ' al fki ' "

如果。cursor fill()
browse
else
a error(la errors)
messagebox(la errors[2])
endif。CursorFill()
结束于

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » 深入CursorAdapter(二)

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情