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组件

    

获取记录集

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

 

 

 

 

 

你可能感兴趣的:(oracle,数据库,Security,System,oracle10g,数据库服务器)