c++ ADO 连接ORACLE 数据库 windows系统验证方式连接失败. c++ADOoracle连接字符串 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 基本是否通过向导建立过OS Authenticated connect,如果建立过就会产生相应的XXX.ora配置信息,再使用这种方法连接 向导建立OS Authenticated connect 这个是怎么弄的呢,能否详细说下吗? 软件装完后,里边 ora文件时有的。 Visual C++提供了多种多样的数据库访问技术——ODBC API、MFC ODBC、DAO、OLE DB、ADO等。其中ADO技术是基于OLE DB的访问接口,它继承了OLE DB技术的优点,并且,ADO对OLE DB的接口作了封装,定义了ADO对象,使程序开发得到简化,ADO技术属于数据库访问的高层接口。1.导入相关库文件(一般在StdAfx.h中导入) #import "c:\program files\common files\system\ado\msado15.dll" \no_namespace \rename("EOF","adoEOF")在#ifdef _UNICODE前面2.初始化COM库(一般在InitInstance()中初始化)BOOL CadoconnectionApp::InitInstance(){ CWinApp::InitInstance();AfxOleInit();//初始化COM库 AfxEnableControlContainer();}3 接口简介ADO库包含三个基本接口:__ConnectionPtr接口 创建数据库连接__CommandPtr接口 执行SQL命令__RecordsetPtr接口 返回结果集 __ConnectionPtr接口返回一个记录集或一个空指针。通常使用它来创建一个数据连接或执行一条不返回任何结果的SQL语句,如一个存储过程。用__ConnectionPtr接口返回一个记录集不是一个好的使用方法。 __CommandPtr接口返回一个记录集。它提供了一种简单的方法来执行返回记录集的存储过程和SQL语句。在使用__CommandPtr接口时,可以利用全局__ConnectionPtr接口,也可以在__CommandPtr接口里直接使用连接串。如果只执行一次或几次数据访问操作,后者是比较好的选择。但如果要频繁访问数据库,并要返回很多记录集,那么,应该使用全局__ConnectionPtr接口创建一个数据连接,然后使用__CommandPtr接口执行存储过程和SQL语句。 __RecordsetPtr是一个记录集对象。与以上两种对象相比,它对记录集提供了更多的控制功能,如记录锁定,游标控制等。同__CommandPtr接口一样,它不一定要使用一个已经创建的数据连接,可以用一个连接串代替连接指针赋给__RecordsetPtr的connection成员变量,让它自己创建数据连接。如果要使用多个记录集,最好的方法是同Command对象一样使用已经创建了数据连接的全局—ConnectionPtr接口,然后使用__RecordsetPtr执行存储过程和SQL语句。4.连接数据库在对话框public: _RecordsetPtr m_pRecordset; _ConnectionPtr m_pConnection; _CommandPtr m_pCommand;在类的构造函数中创建:m_pConnection.CreateInstance(__uuidof(Connection));m_pRecordset.CreateInstance(__uuidof(Recordset));m_pCommand.CreateInstance(__uuidof(Command));BOOL CADODlg::OnInitDialog(){ CDialogEx::OnInitDialog(); // TODO: Add extra initialization here try { m_pConnection->ConnectionTimeout=10; m_pConnection ->Open("Provider=SQLOLEDB;Data Source= PC-20140312ZLBA;Initial Catalog=CNCDB","dbaccess","dbaccess",adModeUnknown); ///连接数据库 MessageBox( L"连接数据库成功"); } catch(_com_error e) { AfxMessageBox(_T("连接数据库失败!")); return TRUE; } return TRUE; // return TRUE unless you set the focus to a control}5.数据库操作m_pConnection ->Execute("delete from TBL_CONNECTLOGS",NULL,adCmdText);6.关闭连接void XXXX::OnDestroy(){ if(m_pConnection ->State) { m_pConnection ->Close(); } m_pConnection =NULL;}补充:连接字符串的模式一般模式"Provider=SQLOLEDB;Data Source=服务器;Initial Catalog=数据库;uid=SQL用户名;pwd=SQL密码;"信任模式"Provider=SQLOLEDB;Data Source=服务器;Initial Catalog=数据库;Integrated Security=SSPI;" 网络模式"Provider=SQLOLEDB;Data Source=IP地址,端口;Network Library=DBMSSOCN;Initial Catalog=数据库;UserID=用户名;Password=密码;" 注意看下面这两种写法,其实是一个意思:m_pConnect->Open("Provider=SQLOLEDB;Data Source=服务器;Initial Catalog=数据库;","sa","123456",-1);m_pConnect->Open("Provider=SQLOLEDB;Data Source=服务器;Initial Catalog=数据库;uid=sa;pwd=123456;","","",-1); 我主要是想实现的是使用windows的身份验证! 管理员以及加入到sysdba的分组里面! 注意是oracle 数据库!!! 按照你的写似乎不行啊,我是Oracle 数据库 m_pConnection->ConnectionString = "Provider=MSDAORA;DataSourse=spc_it_dev;User ID=corona_spc;Password=FISpassword"; m_pConnection 需要包含对应的ADO头文件,你要定义m_pConnection 关于关联控件变量的问题 Worksheets.Add()运行出错 OCX在网页中不能使用是什么原因? 按网上教程做一个ALT的WORD插件,出编译错误 如果将 char型数组中数据拷贝到CString类型变量中 list control 控件的问题 VC6.0能不能支持C99标准? 如何在全屏的游戏界面上,呼出一个已定义了热键的对话框,同时游戏界面仍全屏幕显示 一个很苦恼的问题,怎样使用服务器程序自动发送数据----高分奉送 关于两张图片对比算法 高分急救:窗口绘图黑屏 ActiveX 弹出框问题
其中ADO技术是基于OLE DB的访问接口,它继承了OLE DB技术的优点,并且,ADO对OLE DB的接口作了封装,定义了ADO对象,使程序开发得到简化,ADO技术属于数据库访问的高层接口。
1.导入相关库文件(一般在StdAfx.h中导入)
#import "c:\program files\common files\system\ado\msado15.dll" \
no_namespace \
rename("EOF","adoEOF")
在#ifdef _UNICODE前面
2.初始化COM库(一般在InitInstance()中初始化)
BOOL CadoconnectionApp::InitInstance()
{
CWinApp::InitInstance();
AfxOleInit();//初始化COM库
AfxEnableControlContainer();
}
3 接口简介
ADO库包含三个基本接口:
__ConnectionPtr接口 创建数据库连接
__CommandPtr接口 执行SQL命令
__RecordsetPtr接口 返回结果集
__ConnectionPtr接口返回一个记录集或一个空指针。通常使用它来创建一个数据连接或执行一条不返回任何结果的SQL语句,如一个存储过程。用__ConnectionPtr接口返回一个记录集不是一个好的使用方法。
__CommandPtr接口返回一个记录集。它提供了一种简单的方法来执行返回记录集的存储过程和SQL语句。在使用__CommandPtr接口时,可以利用全局__ConnectionPtr接口,也可以在__CommandPtr接口里直接使用连接串。如果只执行一次或几次数据访问操作,后者是比较好的选择。但如果要频繁访问数据库,并要返回很多记录集,那么,应该使用全局__ConnectionPtr接口创建一个数据连接,然后使用__CommandPtr接口执行存储过程和SQL语句。
__RecordsetPtr是一个记录集对象。与以上两种对象相比,它对记录集提供了更多的控制功能,如记录锁定,游标控制等。同__CommandPtr接口一样,它不一定要使用一个已经创建的数据连接,可以用一个连接串代替连接指针赋给__RecordsetPtr的connection成员变量,让它自己创建数据连接。如果要使用多个记录集,最好的方法是同Command对象一样使用已经创建了数据连接的全局—ConnectionPtr接口,然后使用__RecordsetPtr执行存储过程和SQL语句。
4.连接数据库
在对话框
public:
_RecordsetPtr m_pRecordset;
_ConnectionPtr m_pConnection;
_CommandPtr m_pCommand;
在类的构造函数中创建:
m_pConnection.CreateInstance(__uuidof(Connection));
m_pRecordset.CreateInstance(__uuidof(Recordset));
m_pCommand.CreateInstance(__uuidof(Command));BOOL CADODlg::OnInitDialog()
{
CDialogEx::OnInitDialog();
// TODO: Add extra initialization here
try
{
m_pConnection->ConnectionTimeout=10;
m_pConnection ->Open("Provider=SQLOLEDB;Data Source= PC-20140312ZLBA;Initial Catalog=CNCDB","dbaccess","dbaccess",adModeUnknown);
///连接数据库
MessageBox( L"连接数据库成功");
}
catch(_com_error e)
{
AfxMessageBox(_T("连接数据库失败!"));
return TRUE;
}
return TRUE; // return TRUE unless you set the focus to a control
}
5.数据库操作
m_pConnection ->Execute("delete from TBL_CONNECTLOGS",NULL,adCmdText);6.关闭连接
void XXXX::OnDestroy()
{
if(m_pConnection ->State)
{
m_pConnection ->Close();
}
m_pConnection =NULL;
}
补充:连接字符串的模式
一般模式
"Provider=SQLOLEDB;Data Source=服务器;Initial Catalog=数据库;uid=SQL用户名;pwd=SQL密码;"信任模式
"Provider=SQLOLEDB;Data Source=服务器;Initial Catalog=数据库;Integrated Security=SSPI;" 网络模式
"Provider=SQLOLEDB;Data Source=IP地址,端口;Network Library=DBMSSOCN;Initial Catalog=数据库;UserID=用户名;Password=密码;" 注意看下面这两种写法,其实是一个意思:
m_pConnect->Open("Provider=SQLOLEDB;Data Source=服务器;Initial Catalog=数据库;","sa","123456",-1);
m_pConnect->Open("Provider=SQLOLEDB;Data Source=服务器;Initial Catalog=数据库;uid=sa;pwd=123456;","","",-1);
m_pConnection->ConnectionString = "Provider=MSDAORA;DataSourse=spc_it_dev;User ID=corona_spc;Password=FISpassword";