当前位置:  数据库>oracle

在VS环境下以ADO方式操作Oracle数据库

    来源: 互联网  发布时间:2017-05-29

    本文导语: 利用ADO引擎方式访问Oracle数据库的实现方法: 定义数据库头文件为CDBOperation.h #pragma once  #import "C:Program FilesCommon FilesSystemADOmsado15.dll" no_namespace rename("EOF","adoEOF"),rename("LockTypeEnum","AdoLockTypeEnum"),rename("DataTypeEnum","AdoDataTypeEnum"),rename...

利用ADO引擎方式访问Oracle数据库的实现方法:

定义数据库头文件为CDBOperation.h

#pragma once 
#import "C:Program FilesCommon FilesSystemADOmsado15.dll" no_namespace rename("EOF","adoEOF"),rename("LockTypeEnum","AdoLockTypeEnum"),rename("DataTypeEnum","AdoDataTypeEnum"),
rename("FieldAttributeEnum","AdoFieldAttributeEnum"),rename("EditModeEnum","AdoEditModeEnum"),rename("RecordStatusEnum","AdoRecordStatusEnum"),rename("ParameterDirectionEnum","AdoParameterDirectionEnum")
class CDBOperation 

 public: 
  //初始化数据库操作需要的对象 
  CDBOperation(void); 
  ~CDBOperation(void); 
 
  //连接至数据库 
  bool ConnToDB(); 
 
  //数据库操作函数 
  //查询操作 删除以及添加 
  _RecordsetPtr ExecuteWithResSQL(const char *); 
 
 private: 
  void PrintErrorInfo(_com_error &); 
 
 private: 
  //初始化数据库连接、命令、记录集 
  _ConnectionPtr CreateConnPtr(); 
  _CommandPtr CreateCommPtr(); 
  _RecordsetPtr CreateRecsetPtr(); 
 
 private: 
  //数据库连接需要的连接、命令操作对象 
  _ConnectionPtr m_pConnection; 
  _CommandPtr m_pCommand; 
}; 

定义程序源文件CDBOperation.cpp

#include "CDBOperation.h" 

CDBOperation::CDBOperation(void) 

    CoInitialize(NULL); 
    m_pConnection = CreateConnPtr(); 
    m_pCommand = CreateCommPtr(); 

CDBOperation::~CDBOperation(void) 

    m_pConnection->Close(); 

bool CDBOperation::ConnToDB() 

    if (NULL == m_pConnection) 
    { 
        printf("Failed to create connectionn"); 
        return false; 
    } 
    try 
    { 
  _bstr_t strConnect="Provider=OraOLEDB.Oracle;User ID=scott;Password=19900624;Persist Security Info=True;Data Source="(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 10.108.85.137)(PORT = 1521)) )(CONNECT_DATA = (SID = ORCL)(SERVER=DEDICATED)))"";
    HRESULT hr=m_pConnection->Open(strConnect,"","",NULL);
        if (TRUE == FAILED(hr)) 
        { 
            return false; 
        } 
        m_pCommand->ActiveConnection = m_pConnection; 
        return true; 
    } 
    catch(_com_error &e) 
    { 
        PrintErrorInfo(e); 
        return false; 
    } 

_RecordsetPtr CDBOperation::ExecuteWithResSQL(const char *sql) 

    try 
    { 
        m_pCommand->CommandText = _bstr_t(sql); 
        _RecordsetPtr pRst = m_pCommand->Execute(NULL, NULL, adCmdText); 
        return pRst; 
    } 
    catch(_com_error &e) 
    { 
        PrintErrorInfo(e); 
        return NULL; 
    } 

void CDBOperation::PrintErrorInfo(_com_error &e) 

    printf("Error infomation are as followsn"); 
    printf("ErrorNo: %dnError Message:%snError Source:%snError Description:%sn", e.Error(), e.ErrorMessage(), (LPCTSTR)e.Source(), (LPCTSTR)e.Description()); 

 
_ConnectionPtr CDBOperation::CreateConnPtr() 

    HRESULT hr; 
    _ConnectionPtr connPtr; 
    hr = connPtr.CreateInstance(__uuidof(Connection)); 
    if (FAILED(hr) == TRUE) 
    { 
        return NULL; 
    } 
    return connPtr; 

 
_CommandPtr CDBOperation::CreateCommPtr() 

    HRESULT hr; 
    _CommandPtr commPtr; 
    hr = commPtr.CreateInstance(__uuidof(Command)); 
    if (FAILED(hr) == TRUE) 
    { 
        return NULL; 
    } 
    return commPtr; 

 
_RecordsetPtr CDBOperation::CreateRecsetPtr() 

    HRESULT hr; 
    _RecordsetPtr recsetPtr; 
    hr = recsetPtr.CreateInstance(__uuidof(Recordset)); 
    if (FAILED(hr) ==TRUE) 
    { 
        return NULL; 
    } 
    return recsetPtr; 


    
 
 

您可能感兴趣的文章:

  • Mysql服务器登陆,启动,停止等基本操作命令介绍(Linux/Centos环境)
  • 网页版Unix操作系统环境
  • 对终端辅口进行读操作,程序要嵌在curses环境里
  • 请问如何在qt程序中判断当前的操作系统和环境??
  • 请问,我想在windows环境下安装Konqueror并分析其源码,需要哪些操作步骤?
  • 请问我的KDevelop集成环境中的菜单被我隐藏了,现在要使它显示出来怎么操作?
  • 现在有两个操作系统:win98+win2000;请问在这样的环境下怎样安装linux?谢谢!!
  • 请教如何在qt-linux环境下两个cpp文件中对同一个数组作读写互斥操作?
  • 有在Window2000下学习操作Linux命令等的模拟Linux环境的软件吗?
  • 在win2000+AE4环境上操作系统经常重起如何解决?发言有分
  • 学习《unix环境高级编程》,用什么样的操作系统可以做书中的练习?
  • 对环境变量的操作产生的奇怪的错误
  • JDK环境变量配置的具体操作步骤
  • 在多CPU环境下,如何用C实现元操作。(分数不够可以再加,呵呵我有六千多分,没处用)
  • 请高人指点:我准备在我的机子(winxp)上安装linux(双操作系统),然后在linux环境下 安装oracle817
  • 高分求助 。。。。。。。。。。。。各位高手。可以不可以告诉我。当我下载完resin之后应该如何配置好一个jsp的环境。我的操作系统是win2k professional
  • Windows环境下重置mysql密码操作命令
  • Linux环境中Oracle数据导入与导出备份操作
  • 如果没有LINUX环境,仅凭看书,如何在短时间内尽可能多地熟悉LINUX下的操作?
  • 请教在DOS环境下用ftp命令,操作两台linux服务器,并让他们互传文件
  • vim块选择,可以用长方形的方式选择数据:ctrl+v怎么没有效果呢。我是linux环境的。
  • 同样的用户为什么以不同的方式登陆后它的环境变量不同
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 请教在linux系统开发环境下,有没有db和dbf数据库引擎,如何使用这个数据库?
  • 请教:关于[linux/unix环境下连接到Oracle数据库后断开连接]的问题
  • c语言怎么访问sysbase数据库?开发环境linux
  • php iis7站长之家
  • unix 环境下,我想写一个脚本用来建立informix 数据库的索引,请达人指教
  • 请问微软的SQLServer数据库可以在Linux系统环境中使用吗?
  • [求助]关于数据库链接的问题!在JBuild运行环境下能和sql server连接,但是发布到服务器上就不行了
  • linux+php+mysql环境中,如何重启其中一个数据库,在线等
  • linux 环境下 odbc程序 往oracle数据库insert 中文 乱码问题,请教高手,急!!!!在线等~~
  • 基于Linux环境的Oracle 11g数据库正式推出
  • 想在SCO Unix 下用C++ 编程 数据库用的是Informix 请问用什么开发工具及环境呢?
  • SOS!!!环境:Tomcat4+Oracle8i;链接数据库失败,请各位大虾帮忙指正
  • 在win 2000企业版上怎样建立jsp的环境?(使用oracle9数据库或mysql)
  • 技巧学习 在Python环境下连接Oracle数据库
  • 利用JDBC连接mysql数据库,运行环境为IBM的aglets平台。碰到如下问题!!!SOS!!
  • Oracle ASM环境下怎么进行数据库冷备
  • 新手想做一个数据库函数库作练习,是仿照《unix高级环境编程〉的那个例,书上是非集中式的,不过我想搞集中式的,麻烦大家给个意见
  • Oracle全局数据库名、环境变量和sid的区别
  • Linux环境下手工创建Oracle 10g数据库
  • Unix环境下Oracle数据库完全优化详解
  • 多jdk环境下安装多个tomcat冲突解决配置方法
  • 程序中获取的环境变量能够根据Linux系统中相应环境变量而变化吗?
  • Linux下如何查看,设置环境变量并立即生效
  • 用JSP。XML开发网站。请问那种环境设置最好。该如何设置环境
  • 怎么查看自己的shell的环境变量,和root的环境变量,solaris系统
  • Android环境的PHP开发环境 ANMPP
  • 退出curses环境到字符环境的问题?
  • 请问:环境变量的值 一般前面加$就可以了,但有时又用{}将环境变量括起来,它们有什么区别啊?
  • 介绍几本电子书还有,java的开发环境及测试环境在那下载
  • 用的是linux,kde,gnome为中文环境,如果把它改为英文环境。
  • 下载了个Tomcat 5.0.27,solaris 9系统,但是环境Java_home的环境变量不知道怎么设定


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,