VC ADO连接Oracle数据库

VC ADO连接Oracle数据库

测试数据库为Oracle10g

数据源方式连接。

1、应用程序的stdafx.h头文件中(也可以在其他合适的地方)包含如下语句。

#import "C://program files//common files//system//ado//msado15.dll" no_namespace rename ("EOF", "adoEOF")

 

2、连接数据库

CoInitialize(NULL);                                          //初始化Com组件

     //conPtr.CreateInstance("ADODB.Connection");            //Connection用于与数据库服务器的链接

     conPtr.CreateInstance(__uuidof(Connection));            //Connection用于与数据库服务器的链接另一种方式

     /******************连接数据库********************/

     try

     {

         conPtr->ConnectionTimeout = 5;                          //设置连接时间

         conPtr->Open(_T("DSN=OracleDbTest;"), _T("system"),_T("sa"), adModeUnknown);//systemsa分别为用户名和密码

     }

     catch(_com_error e)                                              //捕捉异常

     {

         AfxMessageBox(e.ErrorMessage());

     }

     CoUninitialize();                                       //释放com组件

    

3、访问数据库

_RecordsetPtr recordPtr;//数据集指针

recordPtr.CreateInstance(__uuidof(Recordset));

CString cmdStr=_T("select name,stuno from student");//student为表名 该表中有两个字段name(字符型)stunoint型)

     try

     {

              recordPtr->Open(_variant_t(cmdStr),

              conPtr.GetInterfacePtr(),

              adOpenDynamic,

              adLockOptimistic,

              adCmdText);

     }

     catch (_com_error  e)

     {

         AfxMessageBox(e.Description());

     }

     while (!(recordPtr->adoEOF))

     {//获取记录

         CString name=(CString)recordPtr->GetCollect(_variant_t("name")).bstrVal;

         int no=recordPtr->GetCollect(_variant_t("stuno")).intVal;

recordPtr->MoveNext();

     }

     recordPtr->Close();//关闭记录集

     recordPtr.Release();//释放空间

     conPtr->Close();//关闭连接

     conPtr.Release();//释放空间

 

非数据源方式连接。

应用程序的stdafx.h头文件中(也可以在其他合适的地方)包含如下语句。

#import "C://program files//common files//system//ado//msado15.dll" no_namespace rename ("EOF", "adoEOF")

 

 

连接数据库

CoInitialize(NULL);                                          //初始化Com组件不知是否有必要

     //conPtr.CreateInstance("ADODB.Connection");            //Connection用于与数据库服务器的链接

     conPtr.CreateInstance(__uuidof(Connection));            //Connection用于与数据库服务器的链接另一种方式

     CString conStr;       

     /*conStr.Format(_T("Provider=MSDAORA.1;User ID=%s;Password=%s;/

     Data Source=%s;Persist Security Info=false"),userName,pwd,dbAddr);*///此连接方式可以连接数据库但是读写数据时有些问题

//sa为密码 system为用户名 orcl为数据库名

     conStr.Format(_T("Provider=OraOLEDB.Oracle.1; /

                            Data Source=%s;Persist Security Info=True"), _T("orcl"));//orcl表示数据库

 

     /******************连接数据库********************/

     try

     {

         conPtr->ConnectionTimeout = 5;                          //设置连接时间

         conPtr->Open(_bstr_t(conStr), _T("system "),_T("sa "),option);///连接oracle数据库systemsa分别表示用户名和密码

     }

     catch(_com_error e)                                              //捕捉异常

     {

         AfxMessageBox(e.ErrorMessage());

     }

     CoUninitialize();                                       //释放com组件

    

获取记录集

获取记录集的方式与数据源方式访问数据库相同相同

 

 

 

 

 

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值