新手提问:帮忙测试一下代码,VC用ADO连接oracle数据库的解决方案

新手提问:帮忙测试一下代码,VC用ADO连接oracle数据库的
#include <iostream>
#include <stdio.h>
#include <ICRSINT.H>
#include <string>
using namespace std;
#import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF", "adoEOF")//这是导入连接数据库的库文件,必须的,而且这个字符串基本可以不变。
void main()
{
if ( FAILED (CoInitialize(NULL) ) )
{
cout<<"Unable to initialize COM"<<endl;
} //初始化Com库,这个不懂不重要,你照做就是了
_ConnectionPtr pMyConnect=NULL;//这是个对象指针,关于对象指针的内容可以百度一下,不过不理解也就算了
HRESULT hr=pMyConnect.CreateInstance(__uuidof(Connection));
//将对象指针实例化
if(FAILED(hr))
{
cout<<"_ConnectionPtr对象指针实例化失败!"<<endl;
return;
}
//_bstr_t strConnect="Driver={sql server};server=qiany;uid=;pwd=;database=pubs"; //SQLSERVER
//这是连接到SQL SERVER数据库的连接字符串,其中的参数要自己改



_bstr_t strConnect="Provider=OraOLEDB.Oracle;Data Source=DOVE;User Id=scott;Password=tiger;";//Persist Security Info=TRUE"; //ORACLE 

//connecting to the database server now:
try{
pMyConnect->Open(strConnect,"","",adModeUnknown);
}//连接到数据库,要捕捉异常
catch (_com_error &e){
cout<<e.ErrorMessage()<<endl; ;///显示错误信息 
}
_RecordsetPtr m_pRecordset;//记录集对象指针,用来执行SQL语句并记录查询结果
if(FAILED(m_pRecordset.CreateInstance( __uuidof( Recordset ))))
{
cout<<"记录集对象指针实例化失败!"<<endl;
return;
}
char sSql[]="SELECT* FROM EMP";//这里可以用_variant_t的类型(一种COM变量类型,如下_bstr_t也是)
try{
m_pRecordset->Open((_variant_t)sSql,
pMyConnect.GetInterfacePtr(),
adOpenDynamic,
adLockOptimistic, adCmdText);//打开数据库,执行SQL语句
}
catch (_com_error &e)
{
cout << e.ErrorMessage()<<endl;
}

//SQL语句执行完毕,读取查询结果
try
{
m_pRecordset->MoveFirst(); //记录集指针移动到查询结果集的前面
while(m_pRecordset->adoEOF==VARIANT_FALSE) 
{
//这里就读取emp表中的雇员的名字
char *sName=(char*)(_bstr_t)(m_pRecordset->Fields->GetItem(_variant_t("ename"))->Value);
cout<<(char*)(_bstr_t)(m_pRecordset->Fields->GetItem(_variant_t("ename"))->Value)<<endl;
m_pRecordset->MoveNext(); 
}
}
catch (_com_error &e)
{
cout<<e.ErrorMessage()<<endl;
}


//添加记录
try
{
if(!m_pRecordset->Supports(adAddNew)) 
{
cout<<"记录添加失败!"<<endl;
return;
}

m_pRecordset->AddNew(); 
m_pRecordset->Fields->GetItem(_variant_t("au_id"))->Value=_bstr_t("998-72-8882");
m_pRecordset->Fields->GetItem(_variant_t("au_lname"))->Value=_bstr_t("赵薇2");
m_pRecordset->Fields->GetItem(_variant_t("au_fname"))->Value=_bstr_t("赵薇2");
m_pRecordset->Fields->GetItem(_variant_t("phone"))->Value=_bstr_t("赵薇2");

m_pRecordset->Update(); 
}//try
catch (_com_error &e)
{
cout<<"e.ErrorMessage()!"<<endl;
}
m_pRecordset->Close();
}





pMyConnect->Open()总是报错啊!
Provider设置为MSDAORA显示“未指定的错误”;
OraOLEDB.Oracle时为Unknown error
求指教,一天了,实在找不到原因啊!



------解决方案--------------------
我来试一下,不一定能解决。
------解决方案--------------------
帮你顶下。目前机器上没装Oracle。所以没法给你测试。
------解决方案--------------------
Provider 是否存在啊
------解决方案--------------------
用这个软件试试。
------解决方案--------------------