精华内容
下载资源
问答
  • Vc连接Oracle数据库

    2013-10-12 13:53:32
    vc连接oracle数据库,使用Oracle提供的occi 代码中将连接类封装到了dll中
  • vc连接oracle数据库

    2016-06-20 12:40:32
    最初的代码,也是我从csdn下载的,最初的代码是c风格,我引入了三个经典的Ado类,增加了一版C++风格的连接,查询。已经在我的机器上调试通过。连接字符串是从tns配置文件里,直接拷过来的,连接字符串写... 连接oracle
  • VC 连接oracle数据库

    千次阅读 2014-06-19 08:22:07
    1、加入头文件 2、连接数据库

    1、导入库文件,并设置全局连接字符串

    #import "C:\Program Files\Common Files\System\ado\msado60_Backcompat_i386.tlb" no_namespace rename("EOF","EndOfFile")
    
    _ConnectionPtr pConn=NULL;	//数据库连接

    2、在工程目录下新建SQL_connect.ini文件,并输入

    Provider=MSDAORA.1;Password=test;User ID=test;Data Source=127.0.0.1:1521/orcl;Persist Security Info=True
    127.0.0.1是指本机,如果连接到其他IP,直接修改该地址即可

    连接数据库

    if (!AfxOleInit())											//初始化OLE/COM库
    	{
    		AfxMessageBox(_T("OLE init Error"));
    		return FALSE;
    	}
    	//创建数据库连接实例
    	CStdioFile file; 
    	file.Open(_T("SQL_Connect.ini"), CFile::modeRead);
    	CString str=_T("");
    	file.ReadString(str);
    	file.Close();
    	const _bstr_t strSRC = (_bstr_t)str;
    	//const _bstr_t strSRC= "Provider=MSDAORA.1;Password=test;User ID=test;Data Source=localhost:1521/orcl;Persist Security Info=True";
    	if (FAILED(pConn.CreateInstance("ADODB.Connection")))
    	{
    		AfxMessageBox(_T("Create Instance failed!"));
    		exit(0);
    	}
    	try
    	{
    		pConn->Open(strSRC,"","",adModeUnknown);
    	}
    	catch(_com_error e)
    	{
    		AfxMessageBox(e.Description());
    		exit(0);
    	}
    	

    3、查询数据库

    	<pre name="code" class="cpp">        CString str="R4-012345A010";
            CString coilnum;
    	_variant_t  RecordsAffected;
    	_RecordsetPtr pRecordset;
    	//钢卷1
    	str.Format(_T("select coilnum from test.test2 where coilnum like '%s'"), str);
    	pRecordset = pConn->Execute((_bstr_t)str,&RecordsAffected,adCmdText);	//查询历史数据中当前卷信息
    	if (!(pRecordset->BOF||pRecordset->EndOfFile) )	//存在历史数据
    	{
    		_variant_t var;
    		var = pRecordset->GetFields()->GetItem((long)0)->GetValue();
    		if(var.vt != VT_NULL)   //为NULL
    		{m_coilnum = var;}
    		else
    		{m_coilnum = "";}
    		
    	}

     
    




    展开全文
  • VC_中连接Oracle数据库的几种方法
  • vc连接oracle数据库vc连接到ora从vc连接oracle数据库cle数据库
  • vc 连接oracle数据库

    千次阅读 2015-09-30 16:26:42
    忙活了几天,终于用vc连接到了oracle数据库(32位),虽然只是连接到本机的。有一种豁然开朗的感觉。 刚开始的时候,各种连不上,我就把关于oracle的软件全删了。我不是正规卸载的,而是把相关文件夹都删了。还有...


    忙活了几天,终于用vc连接到了oracle数据库(32位),虽然只是连接到本机的。有一种豁然开朗的感觉。

    刚开始的时候,各种连不上,我就把关于oracle的软件全删了。我不是正规卸载的,而是把相关文件夹都删了。还有注册表项。(见本文末尾)


    重新安装了11g,要完整版,不是express的。

    pszPwd-密码   ,pszUser-用户, pszServer-数据源(我的是orcl)

    CString cstrSql = "Provider=OraOLEDB.Oracle.1; Password=";
    				cstrSql += pszPwd;
    				cstrSql += "; User ID=";
    				cstrSql += pszUser;
    				cstrSql += "; Data Source=";
    				cstrSql += pszServer;
    				cstrSql += "; Persist Security Info=True";
    				_bstr_t sql = cstrSql;
    				m_oraConn.CreateInstance(__uuidof( Connection));//创建Connection对象
    
    				m_oraConn->Open(sql,"","",adModeUnknown); ///连接数据库

    记录一下。


    完全删除oracle

    参考:http://blog.csdn.net/tanzugan/article/details/7556770


    1、 开始->设置->控制面板->管理工具->服务 停止所有Oracle服务。 
    2、 开始->程序->Oracle - OraHome81->Oracle Installation Products-> Universal Installer 卸装所有Oracle产品,但Universal Installer本身不能被删除 
    5、 运行regedit,选择HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE,按del键删除这个入口。 
    6、 运行regedit,选择HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services,滚动这个列表,删除所有Oracle入口。
    7、 运行refedit,HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog \Application,删除所有Oracle入口。
    8、 开始->设置->控制面板->系统->高级->环境变量 删除环境变量CLASSPATH和PATH中有关Oracle的设定 
    9、 从桌面上、STARTUP(启动)组、程序菜单中,删除所有有关Oracle的组和图标 
    10、 删除\Program Files\Oracle目录 
    11、 重新启动计算机,重起后才能完全删除Oracle所在目录 
    12、 删除与Oracle有关的文件,选择Oracle所在的缺省目录C:\Oracle,删除这个入口目录及所有子目录,并从Windows 2000目录(一般为C:\WINNT)下删除以下文件ORACLE.INI、oradim73.INI、oradim80.INI、 oraodbc.ini等等。
    13、 WIN.INI文件中若有[ORACLE]的标记段,删除该段
    14、 如有必要,删除所有Oracle相关的ODBC的DSN 
    15、 到事件查看器中,删除Oracle相关的日志

    说明: 
    如果有个别DLL文件无法删除的情况,则不用理会,重新启动,开始新的安装, 
    安装时,选择一个新的目录,则,安装完毕并重新启动后,老的目录及文件就可以删除掉了。


    展开全文
  • VC使用ADO连接Oracle数据库

    热门讨论 2012-05-20 21:32:59
    VC使用ADO连接Oracle数据库 内涵详细使用说明,可以按照说明配置学习使用
  • vc中用C语言实现连接oracle数据库(用ado的方法)
  • VC6访问Oracle数据库

    2014-03-17 11:14:28
    VC6.0访问Oracle数据库,通过调用最底层的API,具有最高的运行效率
  • VC远程连接Oracle数据库方法

    热门讨论 2010-12-04 21:38:47
    用VC++ 6.0(VS2005、VS2008、VS2010亦可)通过ODBC远程连接Oracle数据库。 包括说明文档以及demo程序。 原创,谢绝在非CSDN上转载。
  • VC连接Oracle数据库的几种方法.pdf
  •  ADO对象包括:连接对象(Connection Object)、命令对象 (Command Object) 、记录集对象(RecordSet Object)、字段对象(Field Object) 、记录对象(Record Object) 、错误对象(ErrorObject)、参数对象(Parameter ...

    ADO 主要对象介绍

        ADO对象包括:连接对象(Connection Object)、命令对象 (Command Object) 、记录集对象(RecordSet  Object)、字段对象(Field  Object) 、记录对象(Record  Object) 、错误对象(ErrorObject)、参数对象(Parameter Object) 、属性对(Property Object)和流对象(Stream Object) 。其中最为重要的3 个对象是连接对象、命令对象和记录集对象。

        连接对象(Connection Object)代表一个和数据源的连接,以后的数据库操作都是建立在这个连接上的。这和 MFC ODBC中创建数据源的连接的CDatabase数据库类非常相似,其他功能也非常相似。连接对象提供了对数据库的操作,但是它不返回数据库操作之后的记录集,这是和命令对象不同的一点。

        命令对象(Command  Object)用来处理数据库的一些操作,在某些方面具有和连接对象相同的功能。例如都可以执行标准的SQL 语句以及存储过程,不过命令对象可以返回带有记录集的结果。

        记录集对象(RecordSet  Object)代表了一个记录集,和MFC  ODBC中的CRecordset 记录集类有些相似,用来访问记录集。记录集对象能方便地实现记录的添加、修改和删除操作。

    在使用这3 个对象的时候,需要定义与之对应的3 个智能指针,分别为:_ConnectionPtr、

    _CommandPtr 和_RecordsetPtr ,然后调用它们的CreateInstance方法实例化,从而创建这3

    个对象的实例。

    _bstr_t 和_variant_t 类

        在利用ADO进行数据库开发的时候,_bstr_t 和_variant_t两个类很有用,省去了许多BSTR 和VARIANT 类型转换的麻烦。COM编程不使用CString类,因为COM必须设计成跨平台,它需要一种更普遍的方式来处理字符串以及其他数据类型,这也是VARIANT 变量数据类型的来历。BSTR 类型也是如此,用来处理 COM中的字符串。VARIANT 是一个巨大的  union 联合体,几乎包含了所有的数据类型,简单来说,_variant_t是一个类,封装了VARIANT 的数据类型,并允许我们简单地对之进行强制类型转换。同样,_bstr_t 是对BSTR 进行了封装的类。有了这两个类,开发ADO程序将得到很大的方便。

    ADO连接Oracle数据库

    1.引入ADO库

    Visual C++中使用ADO开发数据库之前,需要引入 ADO库。可以在 StdAfx.h 文件

    末尾处引入ADO库文件,方法如下:

    #import "c:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","adoEOF")rename("BOF","adoBOF")
    #pragma warning(disable:4146)
    


    使用预处理指令 import使程序在编译过程中引入ADO动态库(msado15.dll)

    no_namespace表明不使用命令空间。“rename("EOF","adoEOF")”表明把ADO中用到的EOF 改为adoEOF,防止发生命名冲突。

    2.初始化COM库

    在MFC中的App类的InitInstance()函数中加入

    CoInitialize(NULL);//表示com库的初始化

    或者AfxOleInit();

    鼠标右键点击建立类向导(或者按Ctrl+w)添加函数ExitInstance(),在其中加入代码

    CoUninitialize();//释放com库。

    3.建立数据源

    进入 控制面板—>管理工具—>数据源—>系统DNS

    点击添加,选择Oracle in OraDb10g_home1,不同的oracle版本安装的in后面的可能不一样,填写正确。点击OK完成。

    (这里大家可以在网上找找带图片的资料添加)

    4.连接数据库

    建立数据库的连接需要使用连接对象(Connection Object)。首先定义一个 _ConnectionPtr类型的指针,代码如下:

     _ConnectionPtr  m_pConnection;

    然后调用CreateInstance方法实例化,代码如下:

    m_pConnection.Crea teInstance( _uuidof(Con nection));

    调用Connection对象的Open方法创建数据库的连接,Open函数的原型如下:

        HRESULT Open  (

            _bstr_t Con nectionStri ng,

            _bstr_t Use rID,

            _bstr_t Pas sword,

            long Option s );

           其中ConnectionString是一个包含连接信息的字符串,UserID是访问数据库的用户名称,Password是访问数据库的密码,Options为可选参数。如果在连接字符串ConnectionString中包含了数据库用户名和密码,UserIDPassword值可以为空。

           ADO可以连接许多数据库供应商提供的数据源,尽管这些供应商有自己不同的特点,但是ADO使用相同的编程模型,这也是 ADO强大和灵活的一个地方。现在构造一个可以连接Oracle数据库的连接字符串ConnectionString,利用Oracle提供的OLE  DB 数据供应商(Oracle Provider for OLE DB),其典型的连接语句为“Provider=OraOLEDB.Oracle.1;DataSource=serverName;User  ID=MyUserID;  Password=  MyPassword”。其中 DataSource是本地服务名,也就是数据源。数据库本地服务名为 ORCL,数据库用户名为 db1,密码为 db1的连接数据源的代码如下:

     

    	try
    	{
    		m_pConnection.CreateInstance(_uuidof(Connection));
    		m_pConnection.CreateInstance(_uuidof(Recordset));
    		m_pConnection.CreateInstance("ADODB.Connection");
    		_bstr_t strConnect=_T("Provider=OraOLEDB.Oracle.1;Password=tiger;User ID=scott;Data Source=orcl;Persist Security Info=true");
    		m_pConnection->Open(strConnect,"","",adModeUnknown);
    	}
    	catch(_com_error e)
    	{
    		CString errormessage;
    		errormessage.Format("数据库连接失败!\r\n错误信息:%s", e.ErrorMessage());
    		AfxMessageBox(errormessage);
    
    	}



    代码中使用了try 和catch来处理COM异常,如果不处理,ADO的异常有可能使程序崩溃,所以一定要记得捕捉_com_error 异常。代码中使用的OLEDB供应商为Oracle Provider for OLE DB,如果采用微软提供的供应商 Microsoft OLEDB Provider for Oracle 的驱动程序,即“Provider=MSDAORA.1 ”,其他参数不变 ,有的功能不能实现。

     

    源码下载地址:http://download.csdn.net/detail/risingsun001/4316508

    展开全文
  • VC连接oracle数据库

    2012-05-07 14:38:23
    写了一个程序连接数据库连接内网的一个服务器上的oracle 用sqlplus 都可以登录上去 但是用我的程序只能在我电脑上执行 不能在另一台电脑上执行。 好像是连接的时候错误。 但是在sqlplus里面是可以登录的, ...
  • VC连接Oracle数据库之ODBC及ADO

    千次阅读 2011-08-22 21:31:33
    一.ODBC连ORACLE:  str.Format( "Driver={Microsoft ODBC for Oracle};Server=OracleServer.world;Uid=Username;Pwd=asdasd; ") 二.ADO连接ORACLE
    一.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;
        }   
    }
    展开全文
  • 一.版本问题 结合这篇博文自己重新做了个总结 visual studio 2017使用OCCI连接oracle数据库全过程...首先,连接oracle数据库有四种方法,OLD,ODBC,oracle developer tools for visual studio(ODT,这个是需要...
  • C++连接ORacle数据库

    千次阅读 2017-03-21 16:46:28
    1、首先确定安装的oracle数据库是32位的还是64位的,在PLSQL Developer中通过此语句:SQL> select * from v$version;显示如下我的是32位   2、我使用的VS2008在选择Oracle中occi
  • VC++连接oracle数据库详解,入门必备!
  • 学习一门新技术显得犹为重要,之前网上说plsql这个比navicat好用,于是我也去网上下载来学习学习,plsql如何安装,网上有很多例子,为了节省时间,我就不多说了,下面就说一下我用plsql连接远程数据库的过程: ...
  • VC连接SQL Server数据库小例子

    热门讨论 2014-05-14 13:40:47
    此例子是使用VC2010 连接SQL SERVER数据库的源代码,也可以稍作修改用来连接ORACLE/MYSQL等其他数据库,例子非常简单。只要有了解过的同学,一看就能明白,谢谢惠存
  • 使用ado连接oracle数据库 m_pConnection->Open( "Provider=MSDAORA.1;Password=oracle;User ID=sys;Data Source=CGPOS;Persist Security Info=TRUE", "","",NULL); 这里过不去 我临时建立一个工程使用...
  • VC ODBC 连接远程 ORACLE数据库
  • vc6连接oracle

    2013-10-09 21:01:17
    AfxMessageBox("不能连接数据库"); return; } } catch (_com_error e) { AfxMessageBox(e.ErrorMessage()); } 4.连接成功,查询插入的实现很简单,这里就不说了!!!
  • C#连接Oracle实例(含源码和数据库

    热门讨论 2010-03-04 15:39:55
    用C#和Oracle实现的小系统,包括基本的添加,删除,修改,查询功能
  • 数据库vc中用ado连接oracle的几种方法
  • VC+ADO+ORACLE连接

    热门讨论 2008-05-26 08:35:57
    这里实现ADO连接数据库的最简单代码,有利于初学数据库编程人员的参考,希望能对你有帮助!!!
  • #include #include #import "C:Program FilesCommon FilesSystemADOmsado15.dll" no_namespace rename("EOF","adoEOF") using namespace std; #define BUFSIZE 64 int main() { //char buf[BUFSIZE];...
  • 前言:连接ORACLE的方式有很多,此处仅以PROC为例,说明如何连接oracle,有不妥之处,望诸位看官指出,学习共进。 一、安装oracle 10g对应的客户端版本。  注意事项:做好客户配置,以本机为例:D:\oracle\...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,015
精华内容 1,606
关键字:

vc连接oracle数据库