|
10鱼币
ADO连接Oracle数据库失败!求教:
以下是加入到StdAfx.h中的ADO连接
#import "C:\Program Files\common files\system\ado\msado15.dll" no_namespace rename("EOF","adoEOF") rename ("BOF", "adoBOF")
#import "C:\Program Files\common files\system\Ole DB\oledb32.dll" no_namespace
以下是ConnectDB()程序代码:
void CCRDBSDlg::ConnectDB(){
//初始化Connection 指针
m_pConnection.CreateInstance(__uuidof(Connection));
//初始化Recordset 指针
m_pRecordset.CreateInstance(__uuidof(Recordset));
//初始化Command 指针
_CommandPtr m_pCommand;
m_pCommand.CreateInstance("ADODB.Command");
char szPath[255];
//获取应用程序完全路径
::GetModuleFileName(NULL,szPath,255);
CString strFileName = szPath;
//获取所在的目录名称
strFileName.Delete(strFileName.ReverseFind('\\')+1,strFileName.GetLength ()-strFileName.ReverseFind('\\')-1);
//构造配置文件的完全路径
strFileName += "CRDBS.ini";
TCHAR sz[101];
memset(sz,0,sizeof(TCHAR)*101);
//获取配置文件中数据库数据源的值,如果没有,默认值为oradb
GetPrivateProfileString(_T("General"),_T(" 数据库数据源"),_T("oradb"),sz,100,strFileName);
CString strSource(sz);
GetPrivateProfileString(_T("General"),_T(" 数据库用户"),_T("dbcr"),sz,100,strFileName);
CString strUser(sz);
GetPrivateProfileString(_T("General"),_T(" 数据库密码"),_T("dbcr"),sz,100,strFileName);
CString strPwd(sz);
try
{
CString strConnect;
strConnect.Format("Provider=OraOLEDB.Oracle.1;Password=%s;UserID=%s;""Data Source=%s;Persist SecurityInfo=True",strPwd,strUser,strSource);
//连接数据库
m_pConnection->Open((_bstr_t)strConnect,"","",-1);
}
catch (_com_error e)//异常处理
{
AfxMessageBox(e.ErrorMessage());
}
}
编译通过!CRDBS.exe - 0 error(s), 0 warning(s)
运行应用程序时,出现“未指定的错误”提示框,
按“确定”按钮后,又弹出“Unknown error 0x800AOE7D”提示框,
按“确定”按钮后可以打开应用程序界面,但连接不上数据库,
特请教论坛的大侠,望能给予帮助和指点,万分感谢!
|
|