深夜的 一直未能解决的一个难题,该怎么解决
深夜的 一直未能解决的一个难题
这个问题,我已经提过一回
但没得能解决问题的答案
背景是这样的:
----------------------
一个ADO方面的小程序,
功能:从一个数据库把数据导入到另外一个数据库
说明:这个小程序,09年就已经写了。并且在用户那用着一直没问题
------------------------------------------------------
现状:
最近,系统坏了,我用大白菜做了下系统。装了VC6
各个需要的常用的东西 都一并装好了。
最近,一个用户(已经再使用那个ADO小程序的用户)要求对每个SQL 的操作,比如,插入,删除,更新,SQL的语句 都要
写到一个文本里,他要看看。不管用户是什么目地。让你改 咋得改 再说工作量不大
然后什么都不改。就加了个写日志的函数,其实就调用了跟文件操作相关的几个函数
然后 我编译好了,直接发给用户,让用户替换下 再运行
结果,异常退出,线程异常退出
咋 先不说是因为什么 导致的错误
我就是说说一个现象:
然后 ,无论我怎么改,怎么就在我机器上没问题,但就在用户 ,就有问题
实在没办法,征求用户同意,装了个VC6的环境
用一个愤怒的骂人的话来说:么B都没改,要跟踪调试,发现能正常执行
然后 我编译好后,在用户那运行,也正常
我想,奇怪的很
非要我在用户那编译下 ,程序才能正常
为什么呢 ?
我什么都没改
就是编译了下 下
----------------------------------
有人说,我给的用户DEBUG版本的,这个肯定不会,因为DEBUG和RELEASE版本,只要是在机器上编译的
给用户用,就是有问题
--------------------------------
然后,我就拼命的加日志
也不能帮助我多少
因为它在执行
BOOL CAdo::ConnectDB()
{
WriteTBInfoError("开始 ConnectDB....");
HRESULT hr;
CString strbuf;
try
{
WriteTBInfoError("ConnectDB--0001");
hr=m_pConnection.CreateInstance(__uuidof(Connection));
WriteTBInfoError("ConnectDB--0002");
m_pConnection->CursorLocation=adUseClient;//;adUseServer //游标类型 WriteTBInfoError("ConnectDB--0003");
hr=m_pConnection->Open(m_strConnect,"","",adModeUnknown);//adConnectUnspecified
WriteTBInfoError("ConnectDB--0004");
if(!SUCCEEDED(hr))
{
strbuf.Format("Connection.Open 操作失败:%s",m_strConnect);
//WriteLog(strbuf);
WriteTBInfoError(strbuf);
return FALSE;
}
}
catch(_com_error e)
{
if(m_pConnection->State)
{
m_pConnection->Close();
}
m_pConnection=NULL;
strbuf.Format("连接数据库时发生异常:%s",e.ErrorMessage());
WriteTBInfoError(strbuf);
return false;
}
WriteTBInfoError("ConnectDB 成功!");
return TRUE;
}
---------------------------------------------
执行到红色行 , 当前执行的线程退出了
也没法跟踪
我也没改什么
-----------------------------------
跪求 高手 知情者
分不多
望见谅
------------------------------------------------
总的讲:
我的问题:
我的机器上编译的程序 我机器上没问题
但在用户那有问题,但如果在用户那装一个VC6的环境,什么都不改,就仅仅的编译下
就一切正常
=================
各位大侠,你们见过这么奇怪的现象很问题吗 ?
------解决方案--------------------
最明显的解释就是装VC6,把缺少的东西给装进去了!
------解决方案--------------------
应该是客户机环境的问题。装一个VC6的环境,等于客户机的环境发生改变。
你尝试在客户机装VC6后,不用编译,看能否运行正常?
------解决方案--------------------
虽然目前用户问题解决了,但是并不是令人满意的方案
我想你最好查一查ADO方面VC提供了什么东西
这样的话就可以找到答案了
------解决方案--------------------
用户异常退出的信息是什么啊?从这方面调查看看
这个问题,我已经提过一回
但没得能解决问题的答案
背景是这样的:
----------------------
一个ADO方面的小程序,
功能:从一个数据库把数据导入到另外一个数据库
说明:这个小程序,09年就已经写了。并且在用户那用着一直没问题
------------------------------------------------------
现状:
最近,系统坏了,我用大白菜做了下系统。装了VC6
各个需要的常用的东西 都一并装好了。
最近,一个用户(已经再使用那个ADO小程序的用户)要求对每个SQL 的操作,比如,插入,删除,更新,SQL的语句 都要
写到一个文本里,他要看看。不管用户是什么目地。让你改 咋得改 再说工作量不大
然后什么都不改。就加了个写日志的函数,其实就调用了跟文件操作相关的几个函数
然后 我编译好了,直接发给用户,让用户替换下 再运行
结果,异常退出,线程异常退出
咋 先不说是因为什么 导致的错误
我就是说说一个现象:
然后 ,无论我怎么改,怎么就在我机器上没问题,但就在用户 ,就有问题
实在没办法,征求用户同意,装了个VC6的环境
用一个愤怒的骂人的话来说:么B都没改,要跟踪调试,发现能正常执行
然后 我编译好后,在用户那运行,也正常
我想,奇怪的很
非要我在用户那编译下 ,程序才能正常
为什么呢 ?
我什么都没改
就是编译了下 下
----------------------------------
有人说,我给的用户DEBUG版本的,这个肯定不会,因为DEBUG和RELEASE版本,只要是在机器上编译的
给用户用,就是有问题
--------------------------------
然后,我就拼命的加日志
也不能帮助我多少
因为它在执行
BOOL CAdo::ConnectDB()
{
WriteTBInfoError("开始 ConnectDB....");
HRESULT hr;
CString strbuf;
try
{
WriteTBInfoError("ConnectDB--0001");
hr=m_pConnection.CreateInstance(__uuidof(Connection));
WriteTBInfoError("ConnectDB--0002");
m_pConnection->CursorLocation=adUseClient;//;adUseServer //游标类型 WriteTBInfoError("ConnectDB--0003");
hr=m_pConnection->Open(m_strConnect,"","",adModeUnknown);//adConnectUnspecified
WriteTBInfoError("ConnectDB--0004");
if(!SUCCEEDED(hr))
{
strbuf.Format("Connection.Open 操作失败:%s",m_strConnect);
//WriteLog(strbuf);
WriteTBInfoError(strbuf);
return FALSE;
}
}
catch(_com_error e)
{
if(m_pConnection->State)
{
m_pConnection->Close();
}
m_pConnection=NULL;
strbuf.Format("连接数据库时发生异常:%s",e.ErrorMessage());
WriteTBInfoError(strbuf);
return false;
}
WriteTBInfoError("ConnectDB 成功!");
return TRUE;
}
---------------------------------------------
执行到红色行 , 当前执行的线程退出了
也没法跟踪
我也没改什么
-----------------------------------
跪求 高手 知情者
分不多
望见谅
------------------------------------------------
总的讲:
我的问题:
我的机器上编译的程序 我机器上没问题
但在用户那有问题,但如果在用户那装一个VC6的环境,什么都不改,就仅仅的编译下
就一切正常
=================
各位大侠,你们见过这么奇怪的现象很问题吗 ?
------解决方案--------------------
最明显的解释就是装VC6,把缺少的东西给装进去了!
------解决方案--------------------
应该是客户机环境的问题。装一个VC6的环境,等于客户机的环境发生改变。
你尝试在客户机装VC6后,不用编译,看能否运行正常?
------解决方案--------------------
虽然目前用户问题解决了,但是并不是令人满意的方案
我想你最好查一查ADO方面VC提供了什么东西
这样的话就可以找到答案了
------解决方案--------------------
用户异常退出的信息是什么啊?从这方面调查看看