建立网站主页注意那些方面香河县住房和城乡建设部网站
建立网站主页注意那些方面,香河县住房和城乡建设部网站,电商 wordpress主题,免费商城版网站写这篇东西十分吃力#xff0c;因为涉足的领域太新了#xff0c;几乎没有资料可以借鉴#xff0c;即便是原版的。还好#xff0c;从去年开始我就断断续续的看了一点有关C#、.Net的东西#xff0c;近来也对有关“Visual FoxPro 与 .NET”有一些思考#xff0c;虽然吃力Data Sourcec:\\data\\testdata.dbc;Exclusive1);oConn.Open();OleDbCommand oCommandnew OleDbCommand();oCommand.ConnectionoConn;oCommand.CommandTextSET EXACT ON\r\nSET DELETED ON\r\nSET Null OFF;oCommand.ExecuteNonQuery();调用无返回值的存储过程Visual FoxPro 3引入了DBC的概念从技术上使得DBF系列的数据表格上升到数据库的高度支持数据库的典型特征包括存储过程。这里所谓的存储过程用Fox的眼光看就是存放在DBC里面的函数或过程与普通的Fox代码没有什么区别。需要注意的是Visual FoxPro 7所提供的 OLE DB Provider 不支持规范的存储过程调用方式。更明确的说不能使用类似调用SQL Server 中存储过程的方式调用DBC的存储过程。例如在DBC里有这样的存储过程CODE #2*DBC 里的一个存储过程作用是写入一行记录到LOG表中PROCEDURE LogMsg(cMsg as String) INSERT INTO LOG(eventime,logmsg) values(DATETIME(),m.cMsg) ENDPROC这是一个无返回值的过程调用它的过程类似发送语句到数据库于是具体处理是这样的CODE #3//C#代码调用无返回值的存储过程string cMsg”写入一行日志”;oCommand.CommandTextLogMsg(‘cMsg”’)”;oCommand.ExecuteNonQuery();? 调用有返回值的存储过程在DBC有这样一个存储过程CODE #4*DBC里的一个存储过程作用是合计指定国家的销售净额FUNCTION Get_Sum_Order_Net(cCountry as String) as Currency LOCAL iSum as CurrencySELECT sum(order_net) as order_net from orders WHERE cust_id in(SELECT cust_id from customer WHERE Countrym.cCountry) INTO CURSOR tempiSumtemp.order_netUSE IN tempRETURN iSumENDFUNC我们记得在ADO.NET的Command对象里有一个用于返回单个值的方法ExecuteScalar()具体如下CODE #5//C#代码调用有返回值的存储过程string lcCommand” Get_Sum_Order_Net(‘UK’)”;OleDbCommand oCommandnew OleDbCommand(lcCommand,oConn);Object oResultoCommand.ExecuteScalar();Fox是最快的桌面数据库很多年来微软把主要的精力放在了Fox自身的变革上忽视对外的访问接口DBF表格结构简单不少系统都能够直接访问。现在为了.NET中能够访问Fox系列数据源微软发布了 OLE DB Provider满足日常开发工作的需要。我们也看到这个版本的程序在处理时与标准ADO.NET的做法有所不同还好微软已经明确表示将升级Visual FoxPro OLE DB Provider使它能为.NET提供更完美支持第二部分在.NET里使用Visual FoxPro 编写的COM组件Fox能够灵活、直观、快速处理数据使得它非常适合应用在业务逻辑层次。从Visual FoxPro 5开始微软不断加强Visual FoxPro 的COM组件开发上能力。简单归纳一下Visual FoxPro 在COM组件编写的特点全新的运行时刻库VFPnT.DLLn代表版本号。在这个运行库中删除了大量老式的和界面控制元素更小巧、更稳定、更快速。全新的SESSION对象。在多线程状态下提供很好的隔离性。内置对XML的支持方便了多层应用中记录集游标的传递。通过ExecScript() 函数提供了动态执行多行语句的能力。完全支持COM标准。?用Fox编写COM组件是一件愉快的事情.NET提供了对COM组件的调用支持于是我们将快乐在.NET里继续。在Visual FoxPro 里编写一个COM组件(CODE#5)DEFINE CLASS Customer as FoxBaseClass olepublic *继承至自定义的 FoxBase 类*声明时使用 olepublic 关键字告诉编译器定义的是一个COM组件PROCEDURE Init()this.DataBasePathSUBSTR(SYS(2004),1,RAT(\,SYS(2004),2))data\DODEFAULT()ENDPROC* GetCountry() 返回客户说在国家的列表结果用XML表示FUNCTION GetCountry() as StringLOCAL cXml as StringSELECT distinc(country) as country FROM customer INTO CURSOR TempCURSORTOXML(Temp,cXml,1,16,0,1)USE IN tempRETURN cXmlENDFUNC* GetCustomer() 返回指定国家的客户列表结果用XML表示FUNCTION GetCustomer(cCountry as String) as StringLOCAL cXml as StringSELECT * FROM customer WHERE Countrym.cCountry INTO CURSOR TempCURSORTOXML(Temp,cXml,1,16,0,1)USE IN tempRETURN cXml ENDFUNC*合计指定国家的销售净额。这里通过调用DBC里的存储过程取得结果FUNCTION GetSumOrderNet(cCountry as String) as Double RETURN Get_Sum_Order_Net(m.cCountry) ENDFUNC*写入日志的接口。这里通过调用DBC里的存储过程取得结果FUNCTION LogIt(cMsg as String) as BooleanlogMsg(cMsg)RETURN .t. ENDFUNCENDDEFINE接着我们要编译代码生成一个COM组件。假设将以上代码放在一个名为foxclass.prg的文件里使用下面的语句就能得到进程内COM组件(CODE#6)*先将foxclass.prg放入一个名为foxWebService的项目(Project)里如果此项目不存在就生成项目BUILD PROJECT foxWebService FROM foxclass*编译foxWebService项目成为一个COM组件(foxwenservice.dll)并且在系统里注册它。BUILD MTDLL foxWebService FROM foxWebService recompile在.NET里如果希望引用一个非托管的COM组件就必须为非托管COM提供一个.NET定义。可以使用.NET SDK 里的TLBIMP工具程序把一个非托管的COM类型库转换成为.NET的元数据这种元数据实际上就是一个可以被任何托管代码访问的容器类把原来的非托管代码包装起来。CODE#7在命令提示符里执行如下语句将 H:\NET\fox_com\foxwebservice.dll 转化为 .NET的存放在H:\NET\ foxwebservice.dll里TlbImp /OUT:net_fox_com.dll foxwebservice.dll如果你不是很清楚TlbImp是怎样安排net_fox_com里面的对象请使用.NET SDK提供的ildasm.exe工具查看net_fox_com.dll的结构。这样我们就可以在C# 程序里使用我们刚才编写的 COM 组件了CODE#8net_fox_com.CustomerClass obis new net_fox_com.CustomerClass();obis.GetCountry();obis.GetSumOrderNet(“UK”);如果C# 程序用到了net_fox_com中的类定可以这样编译C#代码在命令提示符里执行这样的代码CODE#9csc /t:winexe com_client_sample.cs /r:net_fox_com.dll特别之处在于加入了对net_fox_com.dll的引用。还有需要注意的是务必把net_fox_com.dll文件放在.NET的搜索路径里不然执行应用程序时会报错。我的做法是将EXE文件与net_fox_com.dll放在同一个目录里面另外如果COM组件发生了改变必须重新生成net_fox_com.dll并且重新编译C#代码。.NET对COM体系的平稳过渡体现了微软对开发人员的尊重。试一试你会发现一切是如此简单……第三部分在.NET里使用Visual FoxPro 编写的Web Service.NET和JAVA都以能够跨越不同平台作为卖点JAVA似乎注重代码本身的跨平台特性。.NET则更关注数据的跨平台于是 .NET高举着XML Web Service的大旗出现在我们面前从某种意义上说 .NET 就是 XML Web Service。Visual FoxPro 对XML Web Service 的支持是建立在MS XML与SOAP组件基础上的用Visual FoxPro 编写 Web Service的核心就是上文提到的COM组件编程。只需要把COM组件发布成为Web Service就 OK 了完全基于原有的知识这里需要开发人员注意的是COM能够保留状态而Web Service是无状态系统这是设计Web Service 使用的COM组件时一定要注意的。为了方便开发XML Web Service客户端和服务端程序Visual FoxPro 7 提供一系列的贴身设计内置更具亲和力的 Web Service 发布向导代替 MS SOAP 的WSDL Generator 工具程序。提供 Web Service 项目框架方便快速开发服务端程序。提供了一个Project Hook 类方便开发人员多次编译、重新发布 Web Service。IntelliSense 支持导入 WSDL 文件极大方便了对Web Service的调用。对 SOAP 进行了封装结合 IntelliSense 技术能够自动产生调用Web Service时的初始化代码。? 还有一些细节值得注意Visual FoxPro 7支持COM对象接口实作这为处理SOAP 头信息带来方便支持包括Base64在内的多种编码、解码为数据转化带来方便当然还有前面已经提过的内置XML支持。现在我们把前面的COM组建foxwebservice.dll发布成为Web Service。这里可以使用Visual FoxPro 内置的 Web Service Publish向导TOOLS-Wizards-Web Service也可以使用 WSDL Generator。这里需要注意的是内置的发布向导只支持SOAP 2如果需要利用SOAP 3的新特性就必须使用MS SOAP的 WSDL Generator 工具SOAP 3刚推出Visual FoxPro 好没有来的及更新Web ServicePublish向导。对于本例来说并不计较MS SOAP 的版本。在.NET里调用 Web Service需要建立代理。在命令提示符里执行这样的语句CODE#10wsdl /Language:cs /out:customer.cs http://localhost/cust/customer.WSDL这样我们就得到了针对我们的Web Service的代理文件 customer.cs接着编译这个文件(CODE#11)csc /out:customer.dll /t:library customer.cs接下来的工作更是简单只要在代码里使用这个代理对象就行了例如CODE#12customer obisnew customer();DataSet oDsnew DataSet();//注意很简单就把XML表示的记录集转换成为了Table对象。oDs.ReadXml(new StringReader(obis.GetCountry()));编译时需要在命令提示符里执行以下语句CODE#13csc /t:winexe webs _client_sample.cs /r:customer.dllWeb Service是单纯的XML数据交换.NET 与Visual FoxPro 编写的Web Service之间是全透明的并且这种调用是可以跨域网络的。第四部分Visual FoxPro for .NET Toolkit 介绍前文我们的立足点是怎样将现有 Visual FoxPro技术在.NET平台上应用这些好像对那些不具备Fox技术背景的开发人员没有太大的意义不过接着要介绍的东西是100%的.NET原生资源这就是Visual FoxPro for .NET Toolkit。Visual FoxPro for .NET Toolkit 分别用 VB.NET和C#实现一遍是.NET的原生资源。它的名称空间是VFPToolkit下面一共包含10个类定义总共包含了225个静态函数。这10个类定义分别是 arrays、common、dates、dialogs、environment、files、help、math、strings、vfpdata所有这些函数的“模样”是都是Visual FoxPro 里对应函数“克隆”。由于是对.NET的二次封装、由于考虑到了Fox 开发人员习惯所以这个Tollkit是非常实用的、好用的。对于Fox 开发人员为他们扫清了不太熟悉 .NET的障碍对于其他开发人员也是不错的资源。另外这个 Toolkit 是免费的、开放源代码的微软的Fox Team对它提供技术支持。无论怎么说这是一个好东西快去下载http://www.gotdotnet.com/team/vfp/ 。总结到这里基本上完成了关于“在 .NET里使用Visual FoxPro 资源”的论述。Visual FoxPro 的下一个版本Version 8将在10月份发布Beta版届时我们会看到新版的Fox会对.NET提供更多、更直接的支持当然这是后话了。好了就到这里猫猫的心里话加菲猫的VFP|狐友会社群接收投稿啦加菲猫的VFP用VFP不局限VFP用VFP混合一切。无论是VFP还是JS还是C只要能混合起来都可以发表。商业模式销售技巧、需求规划、产品设计的知识通通可以发表。暂定千字50元红包优秀的文章红包更大一经发表红包到手。如何帮助使用VFP的人用VFP的人有专业的有非专业了很多人其实是小白问出的问题是小白如果问题不对我们引导他们问正确的问题。无论如何请不要嘲笑他们说帮助都不看这么简单的问题都不会嘲笑别人不行而无法提出建设性答案是很low的。我们无论工作需要还是有自己的软件都是是需要真正的知识如何让更多人学习真正的VFP知识呢只需要点赞在看能转发朋友圈就更好了。加菲猫的vfp倡导用VFP极简混合开发少写代码、快速出活用VFP但不局限于VFP各种语言混合开发。我已经带领一百多名会员成功掌到VFP的黑科技进入了移动互联网时代接下来我们要进入物联网领域。2026年狐友会社群会员继续招募中社群会员获取的权益有祺佑三层开发框架商业版猫框终身免费升级终身技术支持。开放的录播课程有微信小程序微信公众号开发H5 APP开发Extjs BS开发VFP面向对象进阶VFP中间层开发,VFP Layui 开发源码类资源有支付组件源码短信源码权限组件源码一些完整系统的源码。这个可以单独出售的需要的可以联系我。会员也可以实现群内资源对接可以接分包合作等各项商业或技术业务