各位大哥:
小弟原先用对话框建立的ADO运行正常,但是将里面的语句添加到MDI里时就出现了问题
问题如下:
#import "C:\Program Files\Common Files\System\ado\msado15.dll"\
rename_namespace("ADOCG")rename("EOF","EndOfFile")
using namespace ADOCG;
这个我都写在StdAfx.h中在对话框的程序里我把_RecordsetPtr的指针和初始化写在APP类里
代码如下:
//声明
public:
_ConnectionPtr m_pCt;//初始化(m_LogDlg是一个登陆用的对话框包括对服务器名,数据库名,用户名,和密码的输入)
if((m_LogDlg.DoModal()==IDOK))
{
m_strCnt=_T("Provider=SQLOLEDB;Server="+m_LogDlg.m_Server_Name+";Database="+m_LogDlg.m_Database_Name+ ";uid="+m_LogDlg.m_User+";pwd="+m_LogDlg.m_Password+";");
try
{
m_pCt.CreateInstance(__uuidof(Connection));
m_pCt->Open((LPCTSTR)m_strCnt,"","",-1); }
catch(_com_error &e)
{
::MessageBox(NULL,e.Description(),"登录出错",MB_OK |MB_ICONWARNING);
}
}在MDI程序里我在APP和CMainFrame都试过了
代码如下:_ConnectionPtr m_pCt;这个我也两个地方都试过了
void CMainFrame::OnDbLink()
{
// TODO: Add your command handler code here
CLogDialog dlg;
if(dlg.DoModal()==IDOK)
{
try
{
CString m_strCnt=_T("Provider=SQLOLEDB;Server="+dlg.m_strServerName+";Database="+dlg.m_strDbName+";uid="+dlg.m_strDbName+";pwd="+dlg.m_strPassword+";");
m_pCt.CreateInstance(__uuidof(Connection));
m_pCt->Open((LPCTSTR)m_strCnt,"","",-1);
}
catch(_com_error &e)
{
::MessageBox(NULL,e.Description(),"登录出错",MB_OK |MB_ICONWARNING);
}
}
}但是这个m_pCt->Open((LPCTSTR)m_strCnt,"","",-1);没有访问数据库
得到的错误是空的。
在没有开SQLSERVER的情况下,前面返回找不到数据库的错误,而后面的仍旧返回空不知错误出在哪里了,拜托各位大哥了。
小弟原先用对话框建立的ADO运行正常,但是将里面的语句添加到MDI里时就出现了问题
问题如下:
#import "C:\Program Files\Common Files\System\ado\msado15.dll"\
rename_namespace("ADOCG")rename("EOF","EndOfFile")
using namespace ADOCG;
这个我都写在StdAfx.h中在对话框的程序里我把_RecordsetPtr的指针和初始化写在APP类里
代码如下:
//声明
public:
_ConnectionPtr m_pCt;//初始化(m_LogDlg是一个登陆用的对话框包括对服务器名,数据库名,用户名,和密码的输入)
if((m_LogDlg.DoModal()==IDOK))
{
m_strCnt=_T("Provider=SQLOLEDB;Server="+m_LogDlg.m_Server_Name+";Database="+m_LogDlg.m_Database_Name+ ";uid="+m_LogDlg.m_User+";pwd="+m_LogDlg.m_Password+";");
try
{
m_pCt.CreateInstance(__uuidof(Connection));
m_pCt->Open((LPCTSTR)m_strCnt,"","",-1); }
catch(_com_error &e)
{
::MessageBox(NULL,e.Description(),"登录出错",MB_OK |MB_ICONWARNING);
}
}在MDI程序里我在APP和CMainFrame都试过了
代码如下:_ConnectionPtr m_pCt;这个我也两个地方都试过了
void CMainFrame::OnDbLink()
{
// TODO: Add your command handler code here
CLogDialog dlg;
if(dlg.DoModal()==IDOK)
{
try
{
CString m_strCnt=_T("Provider=SQLOLEDB;Server="+dlg.m_strServerName+";Database="+dlg.m_strDbName+";uid="+dlg.m_strDbName+";pwd="+dlg.m_strPassword+";");
m_pCt.CreateInstance(__uuidof(Connection));
m_pCt->Open((LPCTSTR)m_strCnt,"","",-1);
}
catch(_com_error &e)
{
::MessageBox(NULL,e.Description(),"登录出错",MB_OK |MB_ICONWARNING);
}
}
}但是这个m_pCt->Open((LPCTSTR)m_strCnt,"","",-1);没有访问数据库
得到的错误是空的。
在没有开SQLSERVER的情况下,前面返回找不到数据库的错误,而后面的仍旧返回空不知错误出在哪里了,拜托各位大哥了。
另一个采用MDI的框架结构但是出问题了void CMainFrame::OnDbLink() //这个是MDI的菜单响应函数
CString m_strCnt=_T("Provider=SQLOLEDB;Server="+dlg.m_strServerName+";Database="+dlg.m_strDbName+";uid="+dlg.m_strDbName+";pwd="+dlg.m_strPassword+";");你把这一句改了,dlg.m_strServerName,dlg.m_strDbName等都改成实在的服务器名及数据库名试试看~
_ConnectionPtr m_pConnection;
hr=m_pConnection.CreateInstance(...);hr=m_pConnection->Open(....);
if(SUCCESSEDE(hr))
...//同样的方法判断是什么没有成功,创建还是连接
在APP类的INITINSTANCE函数用
if(logindig.DoModal()==FALSE)
return FALSE;
你的连接代码都应该在登陆对话框的登陆按钮响应函数里
在APP中加入
if(cmdInfo.m_nShellCommand == CCommandLineInfo::FileNew)
cmdInfo.m_nShellCommand = CCommandLineInfo::FileNothing;
不支持运行后建立空文档
然后创建一个连接菜单,通过这个菜单读取数据库建立文档
但是就出现了以上的错误
感谢各位大哥