找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 796|回复: 3

[求助] 分享我求助的两个问题解决办法。

[复制链接]
发表于 2018-11-12 22:33:38 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
我的项目开发到今天告一段落,因为工作之余自学vlisp二次开发,很费时费力,有时遇到一个问题,几个星期都没有一点进展,现在项目上我自己开发的任务基本完成,把我遇到的两个问题的解决办法在群里分享一下,希望对后期开发遇到同样问题的,能有所帮助。

一、vlisp程序运行结束后,占用内存的大量符号,无法释放,累计导致系统无法运行。

感谢各位前辈的指点,经过反复分析,我已经解决了以上问题,把这次问题的分析剖析如下,希望给遇到同样问题的人提供借鉴。
问题产生的原因,不是因为全局变量没有释放,是在算法层面,我之前写的程序使用的是vlisp方位SQL Server 2012,本身SQL Server就很大,加上算法中需要反复请求数据库服务器,在请求过程中,产生的内存消耗无法释放。后来将数据库放到服务器中时候,不仅仅是内存占用居高不下(达到2G内存占用),而且程序运行几乎进入卡死状态。程序无法有效运行了。数据在高频词请求网络服务器过程中出现拥堵。
为了解决这个问题,我换了MySQL数据库,vlisp连接MySQL的问题很花了我一段时间。搞定之后,测试,将MySQL放在数据库服务器上,同样无法运行。后期只能分析算法,现在的处理方式是,将计算所需要的数据一次性由MySQL数据库服务器发送过来(通过SQL语句),在数值保存在全局变量中,后期所有的计算都从全局变量中获取数值,通过这种算法,最大程度减少对数据库服务器的访问频次,大大提高了计算效率。
以上问题的分析,有不对之处,请各位前辈指出。在这个项目开发过程中,遇到了很多问题都论坛求助,感谢各位前辈耐心指点。深表谢意。



二、vlisp访问MySQL数据库
在群里有前辈分享了ADOLISp函数库和说明文档,初来乍到,我认真阅读了ADOLisp说明文档。AutoCAD访问数据库,主要通过ADO方式访问,访问的工具是通过ADO-LISP Library(ADOLISP),这个工具是Vlisp访问数据库的关键。按照文档说明,ADO-LISP Library(ADOLISP)支持的数据库有Excel、Acess、Foxpro、SQL Server以及Oracle,我用撇脚的英文基础,认真学习了说明文档,为了不错过MySQL数据库,我也尝试了多种方式试图连接vlisp与MySQL,具体连接方法,见我的提问
  AutoCAD通过ODBC连接MySQL和通过MySQL.oledb连接MySQL均失败。 分享我求助的两个问题解决办法。-1.gif
咨询网友,很多给出了需要用C++或者java语言开发一个程序,exe文件,解析MySQL之后才能交给vlisp使用,这个方法让我抓狂,因为我是工作之余自学计算机,学vlisp已经很费力了,再去学C++,那要多长时间才能搞定,为此我基本放弃使用MySQL数据库了。
在即将放弃之际,我给自己3天时间,全力以赴再次尝试各种方法,甚至不惜从工资里花钱购买别人开发的插件。购买arx插件的事情已经谈妥,我还是打算在试验一下,vlisp通过ODBC连接数据库之后,在AutoCAD的数据库管理器中始终无法调出MySQL数据表,打开显示游标冲突!这个问题在网上没有找到资料。
解决的办法是,依靠前辈分享的这个ADO-LISP LibraryADOLISP)工具,在电脑上安装MySQLmysql-installer-community-5.7.24.0) 32位,(64位访问出错,32位速度非常快,不影响使用),不需要按照我测试的步骤,先连接ODBC与MySQL,再连接AutoCAD与ODBC,这些步骤都不需要。只需要按照ADO-LISP LibraryADOLISP)要求设置访问字段就行了。具体字段是什么内容,需要看我们使用的数据库,以下是我找到的字段。
MySQL Connector/ODBC 3.51 (MyODBC 3.51)连接方式
1、本地数据库连接Driver={MySQL ODBC 3.51 Driver};Server=localhost;Database=myDataBase; User=myUsername;Password=myPassword;Option=3;
2、远程数据连接Driver={MySQL ODBC 3.51 Driver};Server=data.domain.com;Database=myDataBase;User=myUsername; Password=myPassword;Option=3;
3、特殊的TCP/IP端口连接说明:此Driver的默认端口是3306。如果没有在连接字符串中特别指出就是连接MySQL的3306端口。Driver={MySQL ODBC 3.51 Driver};Server=data.domain.com;Port=3306;Database=myDataBase;User=myUsername; Password=myPassword;Option=3;
4、特殊字符集的连接Driver={MySQL ODBC 3.51 Driver};Server=data.domain.com;charset=UTF8;Database=myDataBase;User=myUsername; Password=myPassword;Option=3;
终于解决了vlisp访问MySQL的问题,心情大悦,而且这个方法比我计划在网友那里购买的arx插件还要好用,还要简单,且非常稳定。
以上我的想法,对各位前辈来说,应该是小儿科,让各位前辈见笑了。我把这些问题的分析和想法发出来,主要是帮助像我一下在计算机领域还处于入门阶段的同仁。不足之处,恳请批评指正。

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 5295个

财富等级: 富甲天下

发表于 2018-11-13 12:11:40 | 显示全部楼层
不断学习、不断总结、不断提高!你的学习方法值得大家学习!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 5个

财富等级: 恭喜发财

发表于 2019-2-5 15:39:36 | 显示全部楼层
爱好者  你好   谢谢分享    完整代码 发一个 可以吗  354230989@qq.com
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2019-11-16 10:36:20 | 显示全部楼层
楼主您好。向您请教一个关于数据库连接的问题:
我的电脑系统是WIN1064位,安装了AUTOCAD2008(32位),2019(64位)。与数据库连接的VLISP程序,在2008中运行正常,在2019中运行出现如下错误提示:“Automation 错误。 未找到提供程序。该程序可能未正确安装。”参考了网上的一些解决方案,如:
将“Provider=Microsoft.Jet.OLEDB.4.0;Data Source=........”改为
“Provider=Microsoft.ACE.OLEDB.12.0;Data Source=.........”
问题依然得不到解决。
因而在此请教,非常感谢!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-4-20 18:09 , Processed in 0.293234 second(s), 37 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表