关于vc编译环境和系统设置对编译程序的影响问题!高手请进!
代码:
_ConnectionPtr m_pConnection;
_RecordsetPtr m_pRecordset;
BOOL CMytDoc::OnOpenDocument(LPCTSTR lpszPathName)
{
if (!CDocument::OnOpenDocument(lpszPathName))
return FALSE;
////////////////////打开数据库////////////
HRESULT hr;
try
{
hr = m_pConnection.CreateInstance("ADODB.Connection");///创建Connection对象
if(SUCCEEDED(hr))
{
hr = m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data
Source="+(_bstr_t)lpszPathName,"","",adModeUnknown);///连接数据库
///上面一句中连接字串中的Provider是针对ACCESS2000环境的,对于ACCESS97,需要改为
:Provider=Microsoft.Jet.OLEDB.3.51; }
m_pRecordset.CreateInstance("ADODB.Recordset");
}
}
catch(_com_error e)///捕捉异常
{
CString errormessage;
errormessage.Format("连接数据库失败!\r\n错误信息:%s",e.ErrorMessage());
AfxMessageBox(errormessage);///显示错误信息
return FALSE;
}
return TRUE;
}
问题如下:
在win2000下运行正常,但是在win98下m_pRecordset为空,打开数据库失败,提示“指针无效”
我又装了一个完全空白的professional win 2000 ,运行正常
打开了以前编程的备份文件,同一套代码,运行以前编译的程序,非常正常
Rebuild All后编译的程序就很不幸了,依然是m_pRecordset为空,打开数据库失败,提示“指针无效”
我想可能是编译环境的不同而引起的,没有记得变更过系统的什么设置和 VC的什么设置,如果有什么线索,或者哪位兄弟姐妹知道是怎么回事
请告诉我一声,实在是不胜感激了。