以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://www.weistock.com/bbs/index.asp) -- 高级功能研发区 (http://www.weistock.com/bbs/list.asp?boardid=5) ---- 请教DLL读取数据库表格的问题 (http://www.weistock.com/bbs/dispbbs.asp?boardid=5&id=96602) |
-- 作者:智慧梦 -- 发布时间:2016/4/22 10:56:52 -- 请教DLL读取数据库表格的问题 问题描述: 编制一个DLL,其功能是:ODBC或者ADO打开一个Foxpro的数据表DBF, 读取我自己的生成的数据。 在行情总表(序列方式下?)这个DLL被频繁调用。每个股票调用一次, 建立数据连接,做SQL访问,返回数据..调用完毕,关闭数据连接.下次再调用,再建立链接,,再关闭链接..时间都废在建立链接这里了. 请教:能否一次链接多次访问呢?如何加快提高访问效率? 谢谢! |
-- 作者:王锋 -- 发布时间:2016/4/22 11:11:51 -- 勾选这里选项。 然后你的DLL应该在初始化的位置将数据库的建立连接部分放到公共的全局部分,软件调用接口后直接就只去调用具体数据就可以了,这样速度就加快了 ![]() ![]() |
-- 作者:onlyflyttn -- 发布时间:2016/4/26 18:42:30 -- 请问金字塔的VBA不是可以直接调用ADO进行数据访问么,Dll有什么优势? |
-- 作者:智慧梦 -- 发布时间:2016/5/8 12:02:44 -- 以下是引用智慧梦在2016/4/22 10:56:52的发言:
问题描述: 编制一个DLL,其功能是:ODBC或者ADO打开一个Foxpro的数据表DBF, 读取我自己的生成的数据。 在行情总表(序列方式下?)这个DLL被频繁调用。每个股票调用一次, 建立数据连接,做SQL访问,返回数据..调用完毕,关闭数据连接.下次再调用,再建立链接,,再关闭链接..时间都废在建立链接这里了. 请教:能否一次链接多次访问呢?如何加快提高访问效率? 谢谢!
王峰专家您好: 按照您的指引,我做了尝试,暂时还未有结果.因为中途被卡住了(我使用ADO). 源码如下,请专家指点为盼,谢谢!
hr=m_pConnection.CreateInstance("ADODB.Connection") ; // 创建Connection对象
_bstr_t strConnect= "Driver={Microsoft Visual FoxPro Driver};SourceType=DBF;SourceDB=c:\\\\JZTTEST\\\\;Exclusive=No;Collate=Machine;NULL=NO;DELETED=NO;BACKGROUNDFETCH=NO;";
m_pConnection->Open(strConnect,"","",adModeUnknown); /* 金字塔调用时,就卡死在这里...而做成一般EXE程序时,就正常运行读取数据*/
}
[此贴子已经被作者于2016/5/8 12:04:09编辑过]
|
-- 作者:智慧梦 -- 发布时间:2016/5/8 12:18:35 -- 王峰专家,源码在此,请赐教为盼,谢谢! 以下是引用智慧梦在2016/4/22 10:56:52的发言:
问题描述: 编制一个DLL,其功能是:ODBC或者ADO打开一个Foxpro的数据表DBF, 读取我自己的生成的数据。 在行情总表(序列方式下?)这个DLL被频繁调用。每个股票调用一次, 建立数据连接,做SQL访问,返回数据..调用完毕,关闭数据连接.下次再调用,再建立链接,,再关闭链接..时间都废在建立链接这里了. 请教:能否一次链接多次访问呢?如何加快提高访问效率? 谢谢! 王峰专家您好: 按照您的指引,我做了尝试,暂时还未有结果.因为中途被卡住了(我使用ADO). 源码如下,请专家指点为盼,谢谢!
........
} switch (ul_reason_for_call) { if(m_pConnection->State) return TRUE; |
-- 作者:马良 -- 发布时间:2016/5/8 13:04:28 -- 你用的是什么数据库?试试换成access看看能否正常调用。 |
-- 作者:智慧梦 -- 发布时间:2016/5/9 12:18:55 -- 以下是引用马良在2016/5/8 13:04:28的发言:
你用的是什么数据库?试试换成access看看能否正常调用。 还没到链接数据库这一步,就死掉了,死在"创建Connection对象"这一步就死掉了 但是我做成EXE文件就正常.
hr=m_pConnection.CreateInstance("ADODB.Connection") ; // 创建Connection对象-------在这一步就死掉了 |
-- 作者:王锋 -- 发布时间:2016/5/9 13:32:40 -- 那应该与金字塔无关的,是不是你的在项目中还有其他什么东西,导致冲突了 |
-- 作者:智慧梦 -- 发布时间:2016/5/9 20:58:06 -- 以下是引用王锋在2016/5/9 13:32:40的发言:
那应该与金字塔无关的,是不是你的在项目中还有其他什么东西,导致冲突了
以下是网上的案例,与我一样.他的解决方法就是:首先在调用的EXE程序(也就是金字塔程序)里先初始化,奇怪就可以了
http://bbs.csdn.net/topics/340181461
|
-- 作者:智慧梦 -- 发布时间:2016/5/10 11:39:20 -- 以下是引用王锋在2016/5/9 13:32:40的发言:
那应该与金字塔无关的,是不是你的在项目中还有其他什么东西,导致冲突了
王峰等专家: 请问,有无现成的使用ADO的DLL源码实例,我来学习一下,拜托了.
|