Visual C++编程封装ADO类
2008-11-14 19:35:08 来源:WEB开发网2.4 封装类实现文件
封装类实现文件ADODB.CPP如下:
#include "stdafx.h"
#include "ADODB.h"
CADODB::CADODB() //构造函数,完成初始化
{
nResultRow=0; //
nResultCol=0; //记录集行数和列数
m_pConnection = NULL;
}
CADODB::~CADODB() //关闭数据库物理连接
{
if(m_pConnection )m_pConnection->Close();
m_pConnection = NULL;
}
bool CADODB::OpenDataBase(CString DsnName,CString sUserID,CString sPassword)
{ //打开数据库连接
…
HRESULT hr=m_pConnection.CreateInstance("ADODB.Connection");//创建连接对象
hr=m_pConnection->Open((_bstr_t)DsnName,(_bstr_t)sUserID,(_bstr_t)sPassword,adOpenUnspecified); //连接数据库
…
}
int CADODB::Select(CString SqlStr) //SQL查询语句函数
{ …
try
{
hr = m_pRecordset.CreateInstance("ADODB.Recordset");//创建纪录集对象实例
hr = m_pRecordset->putref_ActiveConnection(m_pConnection);//设置连接对象
hr=m_pRecordset->Open(vSqlString,vNull,adOpenDynamic,adLockOptimistic,adCmdText); //打开纪录集
nResultCol = m_pRecordset->Fields->GetCount();//获得纪录集总列数
while(!m_pRecordset->adoEOF)
{
for (j = 0; j < nResultCol; j++) //取一列数据
{
vValue = m_pRecordset->Fields->Item[(long)j]->Value;//取得当前记录字段数据
if(vValue.vt != 1) //数据非空
{
int type = vValue.vt;
if(VariantChangeType(&vValue1, &vValue, 0, VT_BSTR) == S_OK) //转换数据类型(为字符串)
str=vValue1.bstrVal; //保存结果值到临时变量str中
}
if(pData.GetSize()<i*nResultCol+j+1) //动态设置数组的大小
m_pResult.SetSize(i*nResultCol+j+1);
pData[i*nResultCol+j]=str; //保存结果到数组中
m_pRecordset->MoveNext(); //移动记录集指针到下一行
i++;
}
m_pRecordset->Close();
m_pRecordset=NULL;
nResultRow=i;
}
catch(_com_error e)///捕捉异常
{
…
}
pData->FreeExtra();//释放多余的内存空间
return nResultRow;
}
…
- ››Visual Basic 2008 数学函数
- ››Visual Studio2005中Smart Device的问题
- ››Visual Studio 中根据数据库字段动态生成控件
- ››封装JPA的数据操作公共DAO基类
- ››Visual Studio 11全新黑色主题
- ››Visual Studio 2011 Beta新特性(一):安装VS201...
- ››Visual Studio自定义调试窗体两个小技巧
- ››Visual Studio 2005 Team Edition for Database P...
- ››Visual C#两分钟搭建BHO IE钩子
- ››编程实例 一个简单的智能感知效果
- ››Visual C++优化对大型数据集合的并发访问
- ››封装较完整的串口类库
更多精彩
赞助商链接