c语言odbc连接数据库_odbc配置access数据库

c语言odbc连接数据库_odbc配置access数据库一.ODBC连ORACLE: str.Format(“Driver={Microsoft ODBC for Oracle};Server=OracleServer.world;Uid=Username;Pwd=asdasd;”)二.ADO连接ORACLE:

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺
一.ODBC连ORACLE: 

str.Format( “Driver={Microsoft  ODBC  for  Oracle};Server=OracleServer.world;Uid=Username;Pwd=asdasd; “)
二.ADO连接ORACLE:

1.客户端一定要安装 Oracle的oledb的驱动。可到以下网址下载(10.版本的大概190M)

http://otn.oracle.com/software/tech/windows/ole_db/content.html

2.要使用Net Configuration Assistant配置好侦听及相关环境

代码

首先,在 stdafx.h 中加入以下代码,导入ado库

#import “c:\program files\common files\system\ado\msado15.dll” no_namespace rename (“EOF”, “adoEOF”)

其次,要确保有 ::CoInitialize(NULL)的调用,以初始化COM.

//类定义

class CDBOp  {public:    bool ReConnect();    bool CloseConnect();    bool OpenConnect(int dbType,  CString hostName,                     CString dBName, CString userName, CString password);    bool GetItemData(CString itemID, float &price, CString &descript);     //以上取存储过程数据,这里只是举例说明    CString GetErrorMsg();    CDBOp();    virtual ~CDBOp(); private:    _ConnectionPtr m_pConnection;  //连接对象    _RecordsetPtr m_pRecordset;     //记录集对象    bool   m_bConnectSuccess;     //连接是否成功    CString   m_strConnString;      //数据库连接字符串     CString   m_strErrMsg;           //保存错误信息};

//类实现

CDBOp::CDBOp():m_bConnectSuccess(false)
{
    ::CoInitialize(NULL);
    m_pConnection.CreateInstance("ADODB.Connection");
    m_pConnection->ConnectionTimeout=30; 
    m_pRecordset.CreateInstance("ADODB.Recordset");
}
CDBOp::~CDBOp()
{
    //::CoUninitialize();
    CloseConnect();
}
//打开连接(数据库类型,主机名,数据库名,登陆名,密码)
//数据库类型: 0 为Sql server, 1为 Oracle
bool CDBOp::OpenConnect(int dBType,  
        CString hostName, 
        CString dBName, 
        CString userName, 
        CString password)        
{
    CString strConn;
 
    if (dBType =0)  //Sql server
    {
       strConn = "Provider=SQLOLEDB.1";
       strConn+= ";User ID=";
       strConn+= userName;
       strConn+= ";Password=";
       strConn+= password;
       strConn+= ";Initial Catalog=";
       strConn+= dBName;
       strConn+= ";Data Source=";
       strConn+= hostName;
    }
    else if (dBType =1) //Oracle
    {
      //MSDAORA or OraOLEDB.Oracle.1
      strConn = "Provider=OraOLEDB.Oracle.1";
      strConn+= ";Persist Security Info=true";
      strConn+= ";User ID=";
      strConn+= userName;
      strConn+= ";Password=";
      strConn+= password;
      strConn+= ";Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)";
      strConn+= "(HOST=";
      strConn+= hostName;
      strConn+= ")(PORT=1521))(CONNECT_DATA=";
      strConn+= "(SERVICE_NAME=";
      strConn+= dBName;
      strConn+= ")))";
    }
    if (strConn.IsEmpty()) 
    {
      m_strErrMsg="The connect string is null.";
      return false;
    }
    CloseConnect();
    m_strConnString =strConn; 
   
    return ReConnect();
}
//再次连接
bool CDBOp::ReConnect()
{
    m_strErrMsg=_T("");
    m_bConnectSuccess= false;
    HRESULT hr;
    try
    {
       hr = m_pConnection->Open(_bstr_t(m_strConnString), "", "", adModeUnknown);
       if (SUCCEEDED(hr))
       m_bConnectSuccess=true;  
    }
    catch(_com_error e)
    {  
       m_strErrMsg.Format("Connect database failure!\r\n\r\n message error:%s\r\n\r\n
                           The connect string:%s",e.ErrorMessage(),m_strConnString); 
    }
    return m_bConnectSuccess;
}
//关闭链接
bool CDBOp::CloseConnect()
{
   if (m_bConnectSuccess)
   {
      if (m_pConnection->State==1) 
         m_pConnection->Close(); 
      m_bConnectSuccess =false;
   }
   return true;
}
//取得错误信息
CString CDBOp::GetErrorMsg()
{
   return m_strErrMsg;
}
 
bool CDBOp::GetItemData(CString itemID, float &price, CString &descript)
{
    _CommandPtr   pCommand = NULL;
    pCommand.CreateInstance("ADODB.Command");
    #ifdef   _DEBUG   
    if   (pCommand   ==   NULL)   
    {   
      AfxMessageBox("Command Created fail! Please confirm whether initialize COM.");   
    }   
    #endif   
    ASSERT(pCommand   !=   NULL);  
    try   
    {   
        if (m_bConnectSuccess==false)
       {
           if (ReConnect()==false) 
           return false;
        }
     //输入参数   itemID    
     _ParameterPtr   pParamItemID;   
     pParamItemID.CreateInstance("ADODB.Parameter");   
     pParamItemID->Name="ItemID";   //所用存储过程参数名称   
     pParamItemID->Type=adChar;    //参数类型   
     pParamItemID->Size=10;     //参数大小   
     pParamItemID->Direction=adParamInput;  //表明是输入参数   
     pParamItemID->Value=_variant_t(itemID);   
     pCommand->Parameters->Append(pParamItemID);    
  
  
     //输出参数   price    
     _ParameterPtr   pParamPrice;       
     pParamPrice.CreateInstance("ADODB.Parameter");   
     pParamPrice->Name="Price";    //参数名称   
     pParamPrice->Type=adNumeric;    //参数类型   
     pParamPrice->Size=9;      //参数大小
     pParamPrice->Precision =9;
     pParamPrice->NumericScale =2;  
     pParamPrice->Direction=adParamOutput;  //声明是输出参数   
     pCommand->Parameters->Append(pParamPrice);  
 
     //输出参数   Descript    
     _ParameterPtr   pParamDescript;       
     pParamDescript.CreateInstance("ADODB.Parameter");   
     pParamDescript->Name="Descript";   //参数名称   
     pParamDescript->Type=adVarChar;    //参数类型   
     pParamDescript->Size=160;     //参数大小
     pParamDescript->Direction=adParamOutput; //声明是输出参数   
     pCommand->Parameters->Append(pParamDescript);  
     //执行存储过程   
     pCommand->ActiveConnection=m_pConnection;   
     pCommand->CommandText="spItemInfo";   //存储过程名称   
     pCommand->CommandType=adCmdStoredProc;  //表示为存储过程adCmdStoredProc   
     pCommand->Execute(NULL,   NULL,   adCmdStoredProc);   
  
   
     price=(float)(pParamPrice->Value);
     descript = (char*)_bstr_t(pParamDescript->Value);  
     return true;
    }
    catch(_com_error   e)   
    {         
      m_strErrMsg.Format(_T("Error:GetItemData. Reason:%s\n file: %s; line:
                         %d\n"), e.ErrorMessage(), __FILE__, __LINE__);       
   return false;
    }   
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/170075.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • centOS压缩和解压命令之bz2「建议收藏」

    centOS压缩和解压命令之bz2「建议收藏」.bz2压缩文件格式1:bzip2源文件压缩为.bz2格式,不保留源文件格式2:bzip2-k源文件压缩之后保留源文件注意:bzip2命令不能压缩目录.bz2解压格式1:bzip2-d压缩文件:压缩文件消失格式2:bunzip2压缩文件解压缩,-k保留压缩文件

    2022年5月11日
    60
  • ERROR 1045 (28000): Access denied for user ‘root‘@‘localhost‘ (using password: NO)解决办法

    ERROR 1045 (28000): Access denied for user ‘root‘@‘localhost‘ (using password: NO)解决办法问题:ERROR1045(28000):Accessdeniedforuser‘root’@‘localhost’(usingpassword:NO)很久没用这台电脑的mysql了,今天需要连接数据库,启动数据库报错:ERROR1045(28000):Accessdeniedforuser‘root’@‘localhost’(usingpassword:NO)解决方法:查阅资料后知道了,应该使用已知的用户名和密码登陆mysql-uroot-p然而密

    2022年4月30日
    108
  • 基于Neo4j构建的外贸企业关系图谱做企业相似度查询「建议收藏」

    基于Neo4j构建的外贸企业关系图谱做企业相似度查询「建议收藏」基于Neo4j的外贸企业关系图谱做企业相似度查询一、外贸企业关系图谱的构建1.从Oracle导出数据2.导入数据到Neo4j3.Neo4j数据展示二、用Cypher做企业关联查询1.多层关系查询2.基于邻居信息的Jaccard相似度计算3.加权关联度得分计算三、总结一、外贸企业关系图谱的构建说来惭愧,本科、研究生期间还没写过博客,正巧最近在写论文,想结合自己开发的项目来构思,于是就通过这篇博客记录一下使用Neo4j图数据库来做企业相似度查询的过程,方便以后参考。这次外贸企业关系图谱的构建用到以前项目中

    2022年6月26日
    27
  • Apache Struts2远程代码执行漏洞(S2-015)复现及修复方案 「建议收藏」

    Apache Struts2远程代码执行漏洞(S2-015)复现及修复方案 「建议收藏」ApacheStruts2远程代码执行漏洞(S2-015)介绍ApacheStruts2是用于开发JavaEEWeb应用程序的开源Web应用框架。ApacheStruts2.0.0至2.

    2022年6月30日
    109
  • navicat15永久激活码最新【2021免费激活】[通俗易懂]

    (navicat15永久激活码最新)JetBrains旗下有多款编译器工具(如:IntelliJ、WebStorm、PyCharm等)在各编程领域几乎都占据了垄断地位。建立在开源IntelliJ平台之上,过去15年以来,JetBrains一直在不断发展和完善这个平台。这个平台可以针对您的开发工作流进行微调并且能够提供…

    2022年3月30日
    487
  • docker 容器自动退出(退出docker容器命令)

    问题现象centos启动一个容器添加了-d参数,但是dockerps找不到容器,dockerps-a查看却已经退出了[root@VM_0_6_centos~]#dockerrun-dcentosa44b2b88559b68a2221c9574490a0e708bff49d88ca21f9e59d3eb245c7c0547[root@VM_0_6_centos~]#dockerps找不到容器信息[root@VM_0_6_centos~]#dockerps-as

    2022年4月16日
    52

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号