严格来说,X# 中的 CursorAdapter(CA)是不完整的。但是从应用的角度来说,X# 中的 CA 实现确实足够了。
看上去很矛盾?其实一点儿都不矛盾。
从 X# 的角度来说,对 XBase 的兼容性确实是一个技术奇迹。尤其是可以使用所谓常规 XBase 命令即可操作 Cursor。例如,你可以使用 VFP 的 Use 命令打开一个 dbf 文件,并使用相应的命令完成所谓的数据操作。此外,你还可以使用熟悉的 SQL......() 函数来获取远程数据库中的数据,当然,在 X# 中,它也称为 Cursor。
在实际应用中,我曾经写过一篇《XSharp(X#) 开发C/S架构的几种方法》,基于 X# 是一门 .net 语言以及它目前对 VFP 的兼容性,我决定采用第一种推荐的方法。
首先,我们需要清楚一个现实的问题。X# 是一门 .net 语言。虽然我不懂 VO,但是,从已经实现的所谓 VFP 兼容类,也会意识到,魔法背后的 .net 实质。我现在理解为什么 X# 开发组为什么不会将 XSharp.VFP.UI.Dll 作为主推的原因。
X# 本质上是 XBase 版本的 C#,因此,我们需要了解 C# 是如何操作数据的。
简单说,C# 中也有几种方式/模式,但是,对于 foxer 来说,感觉上最亲近的是 ADO.NET 技术。我暂时不推荐你可能听说过的 ORM。至于设计模式,MVVM 之类的,我暂时没看到相比较于 VFP 更有优势的地方。
我知道大多数 foxer 其实对上述内容是懵懵懂懂的,但是,一旦你理解了 ADO.NET 技术,那么,下面的这段代码,你会感觉非常的“值”:
Var cConnectionString := "Driver={SQL Server};UID=sa;PWD=你的密码;Server=你的服务器IP地址和端口;Database=你的数据库"
Var nHandle = SqlStringConnect(cConnectionString,True)
Var oCa = CursorAdapter{}
oCa.DataSourceType = "ODBC"
oCa.DataSource = nHandle
oCa.SelectCmd = "Select * From 你的远程表名"
oCa.KeyFieldList = "主键字段名"
oCa.Alias = "你的本地 Cursor 名"
? oCa:CursorFill()
代码太简单了,但是,“密码”就存在于这段代码中。
因此,我们可以使用 CursorAdapter(CA) 来完成 X# 中 foxpro 方言的远程数据操作。
Follow me,延续自己的技术生命!
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有