您的位置:首页 > 数据库 > Oracle

vc ado链接oracle数据库

2009-08-11 09:07 363 查看
这个例子里用户名和密码都是pzone 数据库名是zp

改成你想要的就行了

import "c:/program files/common files/system/ado/msado15.dll" /

no_namespace /

rename ("EOF", "adoEOF")

_ConnectionPtr m_pConnection;

_RecordsetPtr m_pRecordset;

// 初始化COM,创建ADO连接等操作

AfxOleInit();

连接:

m_pConnection.CreateInstance(__uuidof(Connection));

try //建立数据库连接

{

m_pConnection.CreateInstance(__uuidof(Connection));

m_pConnection->Open("Provider=OraOLEDB.Oracle.1;Password=pzone;User ID=pzone;Data Source=zp;Persist Security Info=True","","",adModeUnknown);

}

catch(_com_error e)

{

CString errormessage;

errormessage.Format("数据库连接失败!/r/n错误信息:%s", e.ErrorMessage());

AfxMessageBox(errormessage);

//return FALSE;

}

查

_bstr_t sql="select name from booktype";

m_pRecordset.CreateInstance(__uuidof(Recordset));

m_pRecordset->Open(sql, m_pConnection->GetConnectionString(),adOpenStatic,adLockOptimistic,adCmdText);

if(!m_pRecordset->BOF)//判断表内数据是否为空

m_pRecordset->MoveFirst();

else{

AfxMessageBox("BookType表内数据为空");

return;

}

while(!m_pRecordset->adoEOF){

CString item=m_pRecordset->GetCollect("name");

m_pRecordset->MoveNext();

}

m_pRecordset->Close();

增加:

_bstr_t sql="insert into tablename values (".....;

m_pConnection->Execute(sql,NULL,adCmdText);

删除

_bstr_t sql="delete from tablename where ...";

m_pConnection->Execute(sql,NULL,adCmdText);

改

_bstr_t sql="update tablename set xx=...";

m_pConnection->Execute(sql,NULL,adCmdText);

在利用ado连接数据库之前,需要做一些准备

1.用#import指令引入ADO类型库

我们在stdafx.h中加入如下语句:

#import "c:program filescommon filessystemadomsado15.dll" no_namespace rename("EOF","adoEOF") 。

这一语句有何作用呢?其最终作用同我们熟悉的#i nclude类似,编译的时候系统会为我们生成msado15.tlh,ado15.tli两个C++头文件来定义ADO库。

几点说明:

(1) 您的环境中msado15.dll不一定在这个目录下,请按实际情况修改

(2) 在编译的时候肯能会出现如下警告,对此微软在MSDN中作了说明,并建议我们不要理会这个警告。msado15.tlh(405) :
warning C4146: unary minus operator applied to unsigned type, result
still unsigned

2、初始化OLE/COM库环境

必须注意的是,ADO库是一组COM动态库,这意味应用程序
在调用ADO前,必须初始化OLE/COM库环境。在MFC应用程序
里,一个比较好的方法是在应用程序
主类的InitInstance成员函数里初始化OLE/COM库环境。

BOOL CMyAdoTestApp::InitInstance()

{

if(!AfxOleInit())//这就是初始化COM库

{

AfxMessageBox(“OLE初始化出错!”);

return FALSE;

}

}

3.ADO库包含三个基本接口:_ConnectionPtr接口、_CommandPtr接口和_RecordsetPtr接口。与数据库的连接
就是用_ConnectionPtr接口,它的连接字符串可以是自己直接写,也可以指向一个ODBC DSN。以下的例子都测试通过,顺便写了SQL
Server的例子。

BOOL CTestconDlg::ConnectDatabase()

{

CString m_server,m_data,m_uid,m_pwd;

m_server="192.168.0.24";//服务器ip或名称

m_data="crmdb";//ODBC数据源

m_uid="njcrm";//用户名

m_pwd="crmdbo";//密码

BOOL retFt=false;

HRESULT hr;

try

{

hr = m_pConnection.CreateInstance("ADODB.Connection");///创建Connection对象

if(SUCCEEDED(hr))

{

_bstr_t connStr;

m_pConnection->CursorLocation=adUseClient;

//begin---------------Oracle ODBC 配置数据源-------------------------------------

//控制面板->管理工具
->数据源(ODBC)->系统DNS->添加->Microsoft ODBC for Oracle->完成->配置……

// connStr="DSN="+m_data;

// m_pConnection->Open(_bstr_t(connStr),(_bstr_t)m_uid,(_bstr_t)m_pwd,adConnectUnspecified);

//end---------------Oracle ODBC 配置数据源---------------------------------------

//begin---------------Oracle 标准安全级别---------------------------------------

// connStr="Provider=OraOLEDB.Oracle;User ID=njcrm;Password=crmdbo;Data Source=192.168.0.24;";

// m_pConnection->Open(_bstr_t(connStr),(_bstr_t)_T(""),(_bstr_t)_T(""),adConnectUnspecified);

//end---------------Oracle 标准安全级别---------------------------------------

//begin---------------Oracle 微软格式---------------------------------------

// connStr="Provider=MSDAORA.1;User ID=njcrm;Password=crmdbo;Data Source=192.168.0.24;Persist Security

Info=False";

// m_pConnection->Open(_bstr_t(connStr),(_bstr_t)_T(""),(_bstr_t)_T(""),adConnectUnspecified);

//end---------------Oracle 微软格式---------------------------------------

//begin---------------Oracle 微软格式 变量---------------------------------------

connStr="Provider=OraOLEDB.Oracle;Persist Security Info=False;Data
Source="+m_server;
m_pConnection->Open(_bstr_t(connStr),(_bstr_t)m_uid,(_bstr_t)m_pwd,adConnectUnspecified);

//end---------------Oracle 微软格式 变量---------------------------------------

//begin---------------Oracle 信任连接 1---------------------------------------

// connStr="Provider=MSDAORA.1;User ID=/;Password=;Data Source=192.168.0.24;Persist Security

Info=False";

// m_pConnection->Open(_bstr_t(connStr),(_bstr_t)_T(""),(_bstr_t)_T(""),adConnectUnspecified);

//end---------------Oracle 信任连接 1---------------------------------------

//begin---------------Oracle 信任连接 2---------------------------------------

// connStr="Provider=MSDAORA.1;OSAuthent=1;Data Source=192.168.0.24;Persist Security Info=False";

// m_pConnection->Open(_bstr_t(connStr),(_bstr_t)m_uid,(_bstr_t)m_pwd,adConnectUnspecified);

//end---------------Oracle 信任连接 2---------------------------------------

//begin---------------SQLServer ODBC配置数据源--------------------------------------- // connStr="DSN=new_kh_wh";

//
m_pConnection->Open(_bstr_t(connStr),(_bstr_t)_T("sa"),(_bstr_t)_T(""),adConnectUnspecified);
//end---------------SQLServer
ODBC配置数据源---------------------------------------

//begin---------------SQLServer---------------------------------------
// connStr="driver={SQL
Server};Server=192.168.0.24;DATABASE=new_kh_bb;Uid=sa;Pwd=;";

// m_pConnection->Open(_bstr_t(connStr),(_bstr_t)_T(""),(_bstr_t)_T(""),adConnectUnspecified);

//end---------------SQLServer---------------------------------------

retFt= true;

}

}

catch(_com_error e)///捕捉异常

{

CString errormessage;

errormessage.Format("连接数据库失败!/r/n错误信息:%s",e.ErrorMessage());

AfxMessageBox(errormessage);///显示错误信息

retFt= false;

}

return retFt;

}

摘自:http://www.programbbs.com/doc/3913.htm,http://zhidao.baidu.com/question/58982306.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息