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);//system和sa分别为用户名和密码 } 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(字符型)stuno(int型) 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数据库system和sa分别表示用户名和密码 } catch(_com_error e) //捕捉异常 { AfxMessageBox(e.ErrorMessage()); } CoUninitialize(); //释放com组件 获取记录集 获取记录集的方式与数据源方式访问数据库相同相同