前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >X#(XSharp)中的 CursorAdapter

X#(XSharp)中的 CursorAdapter

作者头像
firstxinjie
发布于 2025-02-04 06:09:34
发布于 2025-02-04 06:09:34
6800
代码可运行
举报
文章被收录于专栏:X#(XSharp)X#(XSharp)
运行总次数:0
代码可运行

严格来说,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 技术,那么,下面的这段代码,你会感觉非常的“值”:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    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,延续自己的技术生命!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-01-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 xinjie的VFP 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
XSharp(X#)的编译器选项(一)
使用过 VFP 的几乎没考虑过“编译器选项”这个问题。我也同样如此。因此,当我第一次接触这个概念的时候是有瞬间的懵逼。《X# 中使用 VFP 方言常用的编译器选项》一文的原始内容,来自官方论坛中开发组人员的回帖。
firstxinjie
2025/03/20
620
XSharp(X#)的编译器选项(一)
X#(XSharp)的重载
重载是 OOP 编译时的多态性。但是,VFP 虽然号称是面向对象的编程语言,却缺乏这一特性。VFP 的 OOP 仅仅实现了封装和继承。
firstxinjie
2025/01/07
720
X#(XSharp)的重载
X#(XSharp)--VFP的延续
它并不是一种“新”的语言。你可以认为它是 XBase 版本的 C#,或者是 .NET 平台的 VFP(Visual FoxPro)。
firstxinjie
2024/12/06
1410
XSharp(X#) 学习小结
先说结果:从设计过程至代码结果,在 VFP 中可以完成的操作,在 X# 中也同样可以实现,甚至在某些方面,结果更好。
firstxinjie
2024/12/06
810
XSharp(X#) 学习小结
X# 点滴(一):注释和变量
在 X# 中仍然可以以这样的方式使用变量。前提:你需要在项目属性中明确启用以下两项:
firstxinjie
2024/12/06
660
X# 点滴(一):注释和变量
X#(XSharp)中的调用约定
X# 的官方文档中,对调用约定的解释是这样的:调用约定是非托管世界的东西。它们描述了调用函数或方法时应如何传递参数,还描述了被调用函数/方法返回时由谁负责调整堆栈。
firstxinjie
2025/03/27
480
X#(XSharp)中的调用约定
第二章 X# 的历史渊源及其理念
如果你是 80 后,你就已经完全错过了“PC 数据库的黄金时代”,这可能始于Wayne Ratliff在帕萨迪纳 的喷气推进实验室 无聊的一天,帕萨迪纳是一个非常靠近洛杉矶的城市(我曾希望我也能在那里工作, 但至少我去过那里一次)。
firstxinjie
2024/12/06
1270
第二章 X# 的历史渊源及其理念
XSharp(X#) 开发C/S架构的几种方法
缺点:首先要熟悉它们,其次,在 X# 中使用,就像在 VFP 里使用 ADO 一样的别扭。
firstxinjie
2024/12/06
910
XSharp(X#) 开发C/S架构的几种方法
VFP 中的 OOP
大约 30 年前,MS 推出 VFP3。三十年弹指一挥间,但是仍旧有很多 foxer 对 OOP(面向对象) 这个概念懵懵懂懂。
firstxinjie
2024/12/19
850
VFP 中的 OOP
在VFP9中利用CA对远程数据的存取进行管理(一)
CursorAdapter既可以对本地数据进行存取,又可以对远程的不同类型的数据源进行存取,不需要关心数据源,只要对 CursorAdapter的属性进行适当的设置就可以了,甚至可以在程序中动态的对这些属性进行改变,从而达到更快速开发程序的目的,这在以前的版本中简直不可想象,感谢VFP的开发者们为我们提供了CursorAdapter类。
加菲猫的VFP
2021/10/08
1.6K0
XSharp(X#)的编译器选项(五)
Clipper Compatible intiger divisions(Clipper 兼容整数除法)
firstxinjie
2025/03/27
290
XSharp(X#)的编译器选项(五)
如何在 X# 中执行一个窗体(表单)
在简体中文世界,Form 在 VFP 中称为“表单”,在 .NET 世界,称为“窗体”。但是,无论称呼如何,都存在同样的问题,如何执行它。
firstxinjie
2024/12/27
790
如何在 X# 中执行一个窗体(表单)
X# 点滴(三):最初体验
从前两篇的描述来看,X# 对于 VFP 程序员来说似乎是天然的亲近。下图展示了 VFP 和 X# 的“血缘关系”:
firstxinjie
2024/12/06
1070
X# 点滴(三):最初体验
XSharp(X#)的编译器选项(二)
对于 VFP 来说,通常使用的是后期绑定,因此,在 X# 中,如果使用 Visual FoxPro 方言,此选项通常选择比不选择好。
firstxinjie
2025/03/21
730
XSharp(X#)的编译器选项(二)
X# 点滴(六):Visual FoxPro 方言的“设置”
X# 看上去似乎不像 VFP 那样需要过多的 “Set”,但是,不表示你可以什么都不管。
firstxinjie
2024/12/06
770
X# 点滴(六):Visual FoxPro 方言的“设置”
X#(XSharp)的安装教程
有部分 Foxer 对 X# 有足够的好奇心,希望多多少少的了解一下它是什么,能做什么,在自己的心目中对 VFP 的兼容是否符合自己的要求,等等。
firstxinjie
2024/12/06
1190
X#(XSharp)的安装教程
X# 点滴(四):如何创建控制台应用程序(1)
控制台应用程序在 .NET 世界稀松平常,但是对 VFP 程序员来说(绝大多数),潜意识里是一种很复杂的心态,太简单了,还不如一个 DOS 应用程序。就一个黑黑的窗口。能有什么用?
firstxinjie
2024/12/06
510
X# 点滴(四):如何创建控制台应用程序(1)
VFP连接MSSQL执行TSQL,如何显示一个进度条
函数名:SQLCallback(nFuncType, cFuncName[,nFreq]) 缩写:sqlc SQL回调函数。采用一种插入技术,在VFP使用ODBC连接远程数据源过程中,能够调用vfp的程序。
加菲猫的VFP
2022/04/07
9020
XSharp(X#)的编译器选项(三)
Enforce VIRTUAL/OVERRIDE(强制 VIRTUAL/OVERRIDE)
firstxinjie
2025/03/24
690
XSharp(X#)的编译器选项(三)
从零开始学习X#(三)
1. 使用任何您喜欢的编辑器(ahem, VI),然后使用命令行编译器进行编译。这是我留给读者自行探索的选项。
加菲猫的VFP
2021/08/16
1.4K0
相关推荐
XSharp(X#)的编译器选项(一)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验