在VC++中ado 连接mysql用ODBC的出错问题?(高手请进)

dd97911 2005-05-26 03:33:53
我用ADO 连接mysql (通过odbc)具体如下:
在stdafx.h中加入如下语句:
#import "c:\program files\common files\system\ado\msado15.dll" no_namespace rename("EOF","adoEOF")
然后添加:
BOOL CmysqltextApp::InitInstance()
{
if(!AfxOleInit())
AfxMessageBox("数据库初始化失败!!!");
....
return FALSE;
}
然后建立连接
bool CmysqltextDlg::OnInitDialog()
{
HRESULT hr;
_ConnectionPtr m_pconnect;
_RecordsetPtr m_precord;
//_CommandPtr m_pcommand;
//CreateConnectString();
try
{
hr = m_pconnect.CreateInstance("ADODB.Connection");///创建Connection对象
m_precord.CreateInstance("ADODB.Recordset");
m_pcommand.CreateInstance("ADODB.Command");
m_pcommand->ActiveConnection=m_pconnect;
if(SUCCEEDED(hr))
{
m_pconnect->ConnectionTimeout=10;
char *buf="Provider=MSDASQL.1;Persist Security Info=False;User ID=root;Data Source=mysqlodbc";//mysqlodbc是odbc数据源
hr=m_pconnect->Open(buf,"","",adModeUnknown);
//hr = m_pconnect->Open((_bstr_t)szStrConnect.GetBuffer(),"","",adModeUnknown);///连接数据库
}
}
catch(_com_error e)///捕捉异常
{
CString errormessage;
errormessage.Format("连接数据库失败!\r\n错误信息:%s",e.ErrorMessage());
::AfxMessageBox(errormessage);///显示错误信息
return FALSE;
}
...
return TRUE;
}
在odbc数据源中存在mysqlodbc ,mysqlodbc的创建是通过
bool CmysqltextDlg::SetODBCseismon(void)
{
CString strDSN;
strDSN="mysqlodbc";
char *szDSN=new char[1024];
memset(szDSN,0,1024);
char *pStart = szDSN;
strcpy(pStart,"DSN=");
strcat(pStart,strDSN);
pStart+=strlen(pStart)+1;
strcpy(pStart,"SERVER=localhost");
pStart += strlen(pStart)+1;
strcpy(pStart,"DATABASE=mysql");
//////////////set////////////////////
char *PWD=NULL;
char *uName="root";
////////////////////////
pStart+=strlen(pStart)+1;
strcpy(pStart,"UID=");
strcat(pStart,uName);
if(PWD!=NULL)
{
pStart+=strlen(pStart)+1;
strcpy(pStart,"PWD=");
strcat(pStart,PWD);
}
// CreateDSNString(szDSN,szOpenDSN,szDB);
if(!SQLConfigDataSource(NULL,ODBC_ADD_SYS_DSN,"MySQL ODBC 3.51 Driver",szDSN))
return false;
return true;
}
现在存在的问题是odbc数据源已经存在,但是在调用
hr=m_pconnect->Open(buf,"","",adModeUnknown);
//hr = m_pconnect->Open((_bstr_t)szStrConnect.GetBuffer(),"","",adModeUnknown);时,抛出异常,但是hr=S_OK;
我不知道何处除了问题,请教各位高人!!!!
...全文
89 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
liuduofu 2005-05-26
  • 打赏
  • 举报
回复
另外Connection对象的Open方法中的连接字符串参数必须是BSTR或_bstr_t类型。
liuduofu 2005-05-26
  • 打赏
  • 举报
回复
hr = m_pconnect.CreateInstance("ADODB.Connection");///创建Connection对象
m_precord.CreateInstance("ADODB.Recordset");
m_pcommand.CreateInstance("ADODB.Command");
m_pcommand->ActiveConnection=m_pconnect;
          m_pconnect->ConnectionTimeout=10;

放在 try{ ----- }的外面.

4,017

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 数据库
社区管理员
  • 数据库
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧