问题描述:
编制一个DLL,其功能是:ODBC或者ADO打开一个Foxpro的数据表DBF, 读取我自己的生成的数据。
在行情总表(序列方式下?)这个DLL被频繁调用。每个股票调用一次, 建立数据连接,做SQL访问,返回数据..调用完毕,关闭数据连接.下次再调用,再建立链接,,再关闭链接..时间都废在建立链接这里了.
请教:能否一次链接多次访问呢?如何加快提高访问效率?
谢谢!
勾选这里选项。
然后你的DLL应该在初始化的位置将数据库的建立连接部分放到公共的全局部分,软件调用接口后直接就只去调用具体数据就可以了,这样速度就加快了
问题描述:
编制一个DLL,其功能是:ODBC或者ADO打开一个Foxpro的数据表DBF, 读取我自己的生成的数据。
在行情总表(序列方式下?)这个DLL被频繁调用。每个股票调用一次, 建立数据连接,做SQL访问,返回数据..调用完毕,关闭数据连接.下次再调用,再建立链接,,再关闭链接..时间都废在建立链接这里了.
请教:能否一次链接多次访问呢?如何加快提高访问效率?
谢谢!
王峰专家您好:
按照您的指引,我做了尝试,暂时还未有结果.因为中途被卡住了(我使用ADO). 源码如下,请专家指点为盼,谢谢!
hr=m_pConnection.CreateInstance("ADODB.Connection") ; // 创建Connection对象
if(SUCCEEDED(hr))
{
_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程序时,就正常运行读取数据*/
}
问题描述:
编制一个DLL,其功能是:ODBC或者ADO打开一个Foxpro的数据表DBF, 读取我自己的生成的数据。
在行情总表(序列方式下?)这个DLL被频繁调用。每个股票调用一次, 建立数据连接,做SQL访问,返回数据..调用完毕,关闭数据连接.下次再调用,再建立链接,,再关闭链接..时间都废在建立链接这里了.
请教:能否一次链接多次访问呢?如何加快提高访问效率?
谢谢!
王峰专家您好:
按照您的指引,我做了尝试,暂时还未有结果.因为中途被卡住了(我使用ADO). 源码如下,请专家指点为盼,谢谢!
........
_RecordsetPtr m_pRecordset("ADODB.Recordset");
_ConnectionPtr m_pConnection("ADODB.Connection");
........
//以上是定义,,以下是DLLMain程序
BOOL APIENTRY DllMain( HANDLE hModule, DWORD ul_reason_for_call, LPVOID lpReserved)
{
//::CoInitialize(NULL);
try
{
hr=m_pConnection.CreateInstance("ADODB.Connection");
if(SUCCEEDED(hr))
{
_bstr_t strC;
m_pConnection->Open(strConnect,"","",adModeUnknown); /*为什么死在这里*/
mylog<<"死在上一句,为什么到不了这里???"<<endl;
}
}
catch(_com_error e)
{
mylog<<"这个错误信息是什么都显示不出来?"<<e.ErrorMessage()<<endl;
return TRUE;
}
m_pRecordset.CreateInstance(__uuidof(Recordset));// 创建记录集对象
switch (ul_reason_for_call) {
case DLL_PROCESS_ATTACH:
::CoInitialize(NULL);
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
::CoUninitialize();
break;
}
if(m_pConnection->State)
m_pConnection->Close();
//::CoUninitialize();
return TRUE;
}
还没到链接数据库这一步,就死掉了,死在"创建Connection对象"这一步就死掉了
但是我做成EXE文件就正常.
hr=m_pConnection.CreateInstance("ADODB.Connection") ; // 创建Connection对象-------在这一步就死掉了
以下是网上的案例,与我一样.他的解决方法就是:首先在调用的EXE程序(也就是金字塔程序)里先初始化,奇怪就可以了
http://bbs.csdn.net/topics/340181461
王峰等专家: 请问,有无现成的使用ADO的DLL源码实例,我来学习一下,拜托了.