- 浏览: 191229 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
liubang201010:
几个最新版本:请参考 http://www.innovated ...
几个QUEST spotlight 的下载地址及破解/注册码 -
Wentasy:
强大!支持下!
createQuery与createSQLQuery区别 -
wuzhihui001:
双向一对多关系,一是关系维护端(owner side),多是关 ...
一对多关系[转] -
kevinhrw:
我找呀,找呀,终于找到答案了.事务配置成功.2.5版本的Pet ...
BeanNameAutoProxyCreator 不支持annotation的问题解决方法讨论 -
kevinhrw:
这个问题,找了好久,也没没有好的办法.我也提一个问题.解决了这 ...
BeanNameAutoProxyCreator 不支持annotation的问题解决方法讨论
/******************************************************************
模块名称:数据库操作类;
实现功能:提供接口,实现数据的索引,和操作。
研究人员:长寿梦;
最后更新:2010-05-12
预先操作:
【1】在stdafx.h中添加
#import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","adoEOF")
【2】在主进程的InitInstance()中添加
if(!AfxOleInit())
{
AfxMessageBox("OLE初始化错误");
return FALSE;
}
【3】在.cpp文件中要包含"CPFile.h"
*********************************************************************/
/*****************************************************************
CPFile.h
******************************************************************/
class CPData
{
public:
//默认初始化构造函数
CPData();
//传入连接的构造函数
CPData(_ConnectionPtr pConnection);
//析构函数
virtual ~CPData();
public:
//连接数据库
BOOL Connect(CString strUser,CString strPassword,CString strFileName="ConnectionParam.udl",int nOptions=-1,CString strConStr="Provider=sqloledb.1;Data Source=(local);Database=VLan");
//关闭数据库的连接
void DisConnect();
//数据库查询语句,用来对数据库的各种字段进行查询
//如果成功返回TRUE,否则返回FALSE.查询的结果存储在类的共有成员变量m_pRecordset中
//查询结果的行数和列数分别保存在共有成员变量m_nResultRow和m_nResultCol中
BOOL Select(CString strSql);
//查询语句,负责对仅仅查询一个字段的情况进行处理
//结果存放在CStringArray类型的变量pResult中
BOOL Select(CString strSql,CStringArray& Result);
//对多个字段进行查询
BOOL SelectMulitCol(CString strSql,CStringArray& Result);
//打开表
BOOL OpenTable(CString strTable);
//打开表
BOOL OpenTable(CString strTable,CStringArray& Result);
//进行其它的更新操作
BOOL Execute(CString strSql);
public:
BOOL ExecuteTrans(CStringArray& aSql);
//关闭结果集合
void CloseRecordset();
//得到操作结果的列数
long GetResultCol();
//得到操作结果的条数
long GetResultRow();
//得到操作结果
_RecordsetPtr GetResult();
private:
//数据库操作返回的结果条数
long m_nResultRow;
//返回的_RecordsetPtr中列数
long m_nResultCol;
//连接指针
_ConnectionPtr m_pConnection;
//命令执行指针
_CommandPtr m_pCommand;
//结果集指针
_RecordsetPtr m_pRecordset;
};
/**************************************************************
CPFile.cpp
**************************************************************/
//////////////////////////////////////////////////////////////////////
// 构造函数
//////////////////////////////////////////////////////////////////////
//默认的构造函数
CPData::CPData()
{
//初始化
m_nResultRow = 0;
m_nResultCol=0;
m_pConnection = NULL;
//创建对象
m_pRecordset.CreateInstance(_uuidof(Recordset));
m_pCommand.CreateInstance(_uuidof(Command));
}
//传入参数的构造函数
CPData::CPData(_ConnectionPtr pConnection)
{
m_pConnection = pConnection;
m_nResultRow = 0;
m_nResultCol=0;
//创建对象
m_pRecordset.CreateInstance(_uuidof(Recordset));
m_pCommand.CreateInstance(_uuidof(Command));
}
//////////////////////////////////////////////////////////////////////
// 析构函数
//////////////////////////////////////////////////////////////////////
CPData::~CPData()
{
if(m_pRecordset->State!=adStateClosed)
m_pRecordset->Close();
m_pRecordset = NULL;
if(m_pCommand->State!=adStateClosed)
m_pCommand->Release();
m_pCommand = NULL;
if(m_pConnection->State!=adStateClosed)
m_pConnection->Close();
m_pConnection = NULL;
}
/////////////////////////////////////////////////////////////////////
///简单操作函数
////////////////////////////////////////////////////////////////////
//得到操作结果的行数
long CPData::GetResultRow()
{
return this->m_nResultRow;
}
//得到操作结果的列数
long CPData::GetResultCol()
{
return this->m_nResultCol;
}
//得到操作结果
_RecordsetPtr CPData::GetResult()
{
return this->m_pRecordset;
}
///////////////////////////////////////////////////////////////////////
///连接操作
///////////////////////////////////////////////////////////////////////
//连接到数据库
//1.连接字符串可以自己构造,也可以从文件中读出
BOOL CPData::Connect(CString strUser,CString strPassword,CString strFileName,int nOptions,CString strConStr)
{
try{
m_pConnection.CreateInstance(__uuidof(Connection));
HRESULT hr;
//如果用文件方式配置数据源,进行配置
if(strFileName.Compare("")!=0&&CPFile::IsFileExist(strFileName))
{
CString con = "File Name="+strFileName;
m_pConnection->ConnectionString =(_bstr_t)con;
hr=m_pConnection->Open("","","",nOptions);
}
else
{
//自己配置连接字符串
m_pConnection->ConnectionString = (_bstr_t)strConStr;
hr=m_pConnection->Open("",_bstr_t(strUser),_bstr_t(strPassword),nOptions);
}
//进行连接
//连接失败
if(FAILED(hr))
{
AfxMessageBox("连接失败!");
return FALSE;
}
}
catch(_com_error&e)
{
AfxMessageBox(e.Description()+"B");
return FALSE;
}
return TRUE;
}
//断开连接
void CPData::DisConnect()
{
if(m_pConnection->State!=adStateClosed)
m_pConnection->Close();
}
///////////////////////////////////////////////////////////////////////
///更新操作
///////////////////////////////////////////////////////////////////////
BOOL CPData::Execute(CString strSql)
{
try
{
_variant_t vNULL;
vNULL.vt = VT_ERROR;
///定义为无参数
vNULL.scode = DISP_E_PARAMNOTFOUND;
///非常关键的一句,将建立的连接赋值给它
m_pCommand->ActiveConnection = m_pConnection;
///命令字串
m_pCommand->CommandText = (_bstr_t)strSql;
///执行命令,取得记录集
m_pRecordset = m_pCommand->Execute(&vNULL,&vNULL,adCmdText);
//确实,vNULL中的intVal是执行操作所影响的行数
m_nResultRow = 0;
m_nResultRow = vNULL.intVal;
}
catch(_com_error&e)
{
m_nResultRow = 0;
return FALSE;
}
return TRUE;
}
///////////////////////////////////////////////////////////////////////
///查询操作
///////////////////////////////////////////////////////////////////////
BOOL CPData::Select(CString strSql)
{
try
{
m_nResultCol=0;
m_nResultRow=0;
m_pRecordset->CursorLocation=adUseClient; //设置游标位置,设置为客户端形式,否则GetRecordCount()返回值不对
m_pRecordset->Open(_variant_t(strSql),_variant_t((IDispatch *)m_pConnection,true),adOpenDynamic,adLockOptimistic,adCmdText);
m_nResultCol = m_pRecordset->Fields->GetCount();//得到查询结果的列数
m_nResultRow = m_pRecordset->GetRecordCount(); //得到查询结果的行数
}
catch(_com_error&e)
{
AfxMessageBox(e.Description()+"D");
return FALSE;
}
return TRUE;
}
//查询语句,负责对仅仅查询一个字段的情况进行处理
//结果存放在CStringArray类型的变量pResult中
BOOL CPData::Select(CString strSql,CStringArray& Result)
{
if(Select(strSql)!=0)
{
Result.RemoveAll();
for(int i=0;i<m_nResultRow;i++)
{
_variant_t value;
value=m_pRecordset->Fields->Item[(long)0]->Value;
if(value.vt==3||value.vt==14)
{
CString strTrans;
strTrans.Format("%ld",value.intVal);
Result.Add(strTrans);
}
else
Result.Add(value.bstrVal);//
m_pRecordset->MoveNext();
}
m_pRecordset->Close();
return TRUE;
}
else
{
m_pRecordset->Close();
return FALSE;
}
}
BOOL CPData::SelectMulitCol(CString strSql,CStringArray& Result)
{
if(Select(strSql)!=0)
{
Result.RemoveAll();
_variant_t value;
for(int i=0;i<m_nResultRow;i++)
{
for(int j=0;j<m_nResultCol;j++)
{
value=m_pRecordset->Fields->Item[(long)(/*i*m_nResultCol+*/j)]->Value;
if(value.vt==3||value.vt==14)
{
CString strTrans;
strTrans.Format("%ld",value.intVal);
Result.Add(strTrans);
}
else
if(value.vt==7)
{
COleDateTime time = value.date;
CString strTemp;
strTemp.Format("%d-%d-%d %s",time.GetYear(),time.GetMonth(),time.GetDay(),time.Format("%H:%M:%S"));
Result.Add(strTemp);
}
else
Result.Add(value.bstrVal);//
}
m_pRecordset->MoveNext();
}
m_pRecordset->Close();
return TRUE;
}
else
{
m_pRecordset->Close();
return FALSE;
}
}
//打开整张表
BOOL CPData::OpenTable(CString strTable)
{
try
{
m_nResultCol=0;
m_nResultRow=0;
m_pRecordset->CursorLocation=adUseClient; //设置游标位置,设置为客户端形式,否则GetRecordCount()返回值不对
m_pRecordset->Open(_variant_t(strTable),_variant_t((IDispatch *)m_pConnection,true),adOpenDynamic,adLockOptimistic,adCmdTable);
m_nResultCol = m_pRecordset->Fields->GetCount();//得到查询结果的列数
m_nResultRow = m_pRecordset->GetRecordCount(); //得到查询结果的行数
}
catch(_com_error&e)
{
AfxMessageBox(e.Description()+"E");
return FALSE;
}
return TRUE;
}
BOOL CPData::OpenTable(CString strTable,CStringArray& Result)
{
if(OpenTable(strTable)!=0)
{
Result.RemoveAll();
_variant_t value;
for(int i=0;i<m_nResultRow;i++)
{
for(int j=0;j<m_nResultCol;j++)
{
value=m_pRecordset->Fields->Item[(long)(/*i*m_nResultCol+*/j)]->Value;
if(value.vt==3||value.vt==14)
{
CString strTrans;
strTrans.Format("%ld",value.intVal);
Result.Add(strTrans);
}
else
if(value.vt==7)
{
COleDateTime time = value.date;
CString strTemp;
strTemp.Format("%d-%d-%d %s",time.GetYear(),time.GetMonth(),time.GetDay(),time.Format("%H:%M:%S"));
Result.Add(strTemp);
}
else
Result.Add(value.bstrVal);//
}
m_pRecordset->MoveNext();
}
m_pRecordset->Close();
return TRUE;
}
else
{
return FALSE;
}
}
/////////////////////////////////////////////////////////////////////////////
///关闭结果集
/////////////////////////////////////////////////////////////////////////////
void CPData::CloseRecordset()
{
if(m_pRecordset->State != adStateClosed)
m_pRecordset->Close();
}
BOOL CPData::ExecuteTrans(CStringArray& aSql)
{
try{
int nNum = aSql.GetSize();
m_pConnection->BeginTrans();
for(int i=0;i<nNum;i++)
{
CString strSql = aSql.GetAt(i);
m_pConnection->Execute((_bstr_t)aSql.GetAt(i),NULL,adCmdText);
}
m_pConnection->CommitTrans();
return TRUE;
}
catch(_com_error& e)
{
m_pConnection->RollbackTrans();
AfxMessageBox(e.Description()+"F");
return FALSE;
}
}
模块名称:数据库操作类;
实现功能:提供接口,实现数据的索引,和操作。
研究人员:长寿梦;
最后更新:2010-05-12
预先操作:
【1】在stdafx.h中添加
#import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","adoEOF")
【2】在主进程的InitInstance()中添加
if(!AfxOleInit())
{
AfxMessageBox("OLE初始化错误");
return FALSE;
}
【3】在.cpp文件中要包含"CPFile.h"
*********************************************************************/
/*****************************************************************
CPFile.h
******************************************************************/
class CPData
{
public:
//默认初始化构造函数
CPData();
//传入连接的构造函数
CPData(_ConnectionPtr pConnection);
//析构函数
virtual ~CPData();
public:
//连接数据库
BOOL Connect(CString strUser,CString strPassword,CString strFileName="ConnectionParam.udl",int nOptions=-1,CString strConStr="Provider=sqloledb.1;Data Source=(local);Database=VLan");
//关闭数据库的连接
void DisConnect();
//数据库查询语句,用来对数据库的各种字段进行查询
//如果成功返回TRUE,否则返回FALSE.查询的结果存储在类的共有成员变量m_pRecordset中
//查询结果的行数和列数分别保存在共有成员变量m_nResultRow和m_nResultCol中
BOOL Select(CString strSql);
//查询语句,负责对仅仅查询一个字段的情况进行处理
//结果存放在CStringArray类型的变量pResult中
BOOL Select(CString strSql,CStringArray& Result);
//对多个字段进行查询
BOOL SelectMulitCol(CString strSql,CStringArray& Result);
//打开表
BOOL OpenTable(CString strTable);
//打开表
BOOL OpenTable(CString strTable,CStringArray& Result);
//进行其它的更新操作
BOOL Execute(CString strSql);
public:
BOOL ExecuteTrans(CStringArray& aSql);
//关闭结果集合
void CloseRecordset();
//得到操作结果的列数
long GetResultCol();
//得到操作结果的条数
long GetResultRow();
//得到操作结果
_RecordsetPtr GetResult();
private:
//数据库操作返回的结果条数
long m_nResultRow;
//返回的_RecordsetPtr中列数
long m_nResultCol;
//连接指针
_ConnectionPtr m_pConnection;
//命令执行指针
_CommandPtr m_pCommand;
//结果集指针
_RecordsetPtr m_pRecordset;
};
/**************************************************************
CPFile.cpp
**************************************************************/
//////////////////////////////////////////////////////////////////////
// 构造函数
//////////////////////////////////////////////////////////////////////
//默认的构造函数
CPData::CPData()
{
//初始化
m_nResultRow = 0;
m_nResultCol=0;
m_pConnection = NULL;
//创建对象
m_pRecordset.CreateInstance(_uuidof(Recordset));
m_pCommand.CreateInstance(_uuidof(Command));
}
//传入参数的构造函数
CPData::CPData(_ConnectionPtr pConnection)
{
m_pConnection = pConnection;
m_nResultRow = 0;
m_nResultCol=0;
//创建对象
m_pRecordset.CreateInstance(_uuidof(Recordset));
m_pCommand.CreateInstance(_uuidof(Command));
}
//////////////////////////////////////////////////////////////////////
// 析构函数
//////////////////////////////////////////////////////////////////////
CPData::~CPData()
{
if(m_pRecordset->State!=adStateClosed)
m_pRecordset->Close();
m_pRecordset = NULL;
if(m_pCommand->State!=adStateClosed)
m_pCommand->Release();
m_pCommand = NULL;
if(m_pConnection->State!=adStateClosed)
m_pConnection->Close();
m_pConnection = NULL;
}
/////////////////////////////////////////////////////////////////////
///简单操作函数
////////////////////////////////////////////////////////////////////
//得到操作结果的行数
long CPData::GetResultRow()
{
return this->m_nResultRow;
}
//得到操作结果的列数
long CPData::GetResultCol()
{
return this->m_nResultCol;
}
//得到操作结果
_RecordsetPtr CPData::GetResult()
{
return this->m_pRecordset;
}
///////////////////////////////////////////////////////////////////////
///连接操作
///////////////////////////////////////////////////////////////////////
//连接到数据库
//1.连接字符串可以自己构造,也可以从文件中读出
BOOL CPData::Connect(CString strUser,CString strPassword,CString strFileName,int nOptions,CString strConStr)
{
try{
m_pConnection.CreateInstance(__uuidof(Connection));
HRESULT hr;
//如果用文件方式配置数据源,进行配置
if(strFileName.Compare("")!=0&&CPFile::IsFileExist(strFileName))
{
CString con = "File Name="+strFileName;
m_pConnection->ConnectionString =(_bstr_t)con;
hr=m_pConnection->Open("","","",nOptions);
}
else
{
//自己配置连接字符串
m_pConnection->ConnectionString = (_bstr_t)strConStr;
hr=m_pConnection->Open("",_bstr_t(strUser),_bstr_t(strPassword),nOptions);
}
//进行连接
//连接失败
if(FAILED(hr))
{
AfxMessageBox("连接失败!");
return FALSE;
}
}
catch(_com_error&e)
{
AfxMessageBox(e.Description()+"B");
return FALSE;
}
return TRUE;
}
//断开连接
void CPData::DisConnect()
{
if(m_pConnection->State!=adStateClosed)
m_pConnection->Close();
}
///////////////////////////////////////////////////////////////////////
///更新操作
///////////////////////////////////////////////////////////////////////
BOOL CPData::Execute(CString strSql)
{
try
{
_variant_t vNULL;
vNULL.vt = VT_ERROR;
///定义为无参数
vNULL.scode = DISP_E_PARAMNOTFOUND;
///非常关键的一句,将建立的连接赋值给它
m_pCommand->ActiveConnection = m_pConnection;
///命令字串
m_pCommand->CommandText = (_bstr_t)strSql;
///执行命令,取得记录集
m_pRecordset = m_pCommand->Execute(&vNULL,&vNULL,adCmdText);
//确实,vNULL中的intVal是执行操作所影响的行数
m_nResultRow = 0;
m_nResultRow = vNULL.intVal;
}
catch(_com_error&e)
{
m_nResultRow = 0;
return FALSE;
}
return TRUE;
}
///////////////////////////////////////////////////////////////////////
///查询操作
///////////////////////////////////////////////////////////////////////
BOOL CPData::Select(CString strSql)
{
try
{
m_nResultCol=0;
m_nResultRow=0;
m_pRecordset->CursorLocation=adUseClient; //设置游标位置,设置为客户端形式,否则GetRecordCount()返回值不对
m_pRecordset->Open(_variant_t(strSql),_variant_t((IDispatch *)m_pConnection,true),adOpenDynamic,adLockOptimistic,adCmdText);
m_nResultCol = m_pRecordset->Fields->GetCount();//得到查询结果的列数
m_nResultRow = m_pRecordset->GetRecordCount(); //得到查询结果的行数
}
catch(_com_error&e)
{
AfxMessageBox(e.Description()+"D");
return FALSE;
}
return TRUE;
}
//查询语句,负责对仅仅查询一个字段的情况进行处理
//结果存放在CStringArray类型的变量pResult中
BOOL CPData::Select(CString strSql,CStringArray& Result)
{
if(Select(strSql)!=0)
{
Result.RemoveAll();
for(int i=0;i<m_nResultRow;i++)
{
_variant_t value;
value=m_pRecordset->Fields->Item[(long)0]->Value;
if(value.vt==3||value.vt==14)
{
CString strTrans;
strTrans.Format("%ld",value.intVal);
Result.Add(strTrans);
}
else
Result.Add(value.bstrVal);//
m_pRecordset->MoveNext();
}
m_pRecordset->Close();
return TRUE;
}
else
{
m_pRecordset->Close();
return FALSE;
}
}
BOOL CPData::SelectMulitCol(CString strSql,CStringArray& Result)
{
if(Select(strSql)!=0)
{
Result.RemoveAll();
_variant_t value;
for(int i=0;i<m_nResultRow;i++)
{
for(int j=0;j<m_nResultCol;j++)
{
value=m_pRecordset->Fields->Item[(long)(/*i*m_nResultCol+*/j)]->Value;
if(value.vt==3||value.vt==14)
{
CString strTrans;
strTrans.Format("%ld",value.intVal);
Result.Add(strTrans);
}
else
if(value.vt==7)
{
COleDateTime time = value.date;
CString strTemp;
strTemp.Format("%d-%d-%d %s",time.GetYear(),time.GetMonth(),time.GetDay(),time.Format("%H:%M:%S"));
Result.Add(strTemp);
}
else
Result.Add(value.bstrVal);//
}
m_pRecordset->MoveNext();
}
m_pRecordset->Close();
return TRUE;
}
else
{
m_pRecordset->Close();
return FALSE;
}
}
//打开整张表
BOOL CPData::OpenTable(CString strTable)
{
try
{
m_nResultCol=0;
m_nResultRow=0;
m_pRecordset->CursorLocation=adUseClient; //设置游标位置,设置为客户端形式,否则GetRecordCount()返回值不对
m_pRecordset->Open(_variant_t(strTable),_variant_t((IDispatch *)m_pConnection,true),adOpenDynamic,adLockOptimistic,adCmdTable);
m_nResultCol = m_pRecordset->Fields->GetCount();//得到查询结果的列数
m_nResultRow = m_pRecordset->GetRecordCount(); //得到查询结果的行数
}
catch(_com_error&e)
{
AfxMessageBox(e.Description()+"E");
return FALSE;
}
return TRUE;
}
BOOL CPData::OpenTable(CString strTable,CStringArray& Result)
{
if(OpenTable(strTable)!=0)
{
Result.RemoveAll();
_variant_t value;
for(int i=0;i<m_nResultRow;i++)
{
for(int j=0;j<m_nResultCol;j++)
{
value=m_pRecordset->Fields->Item[(long)(/*i*m_nResultCol+*/j)]->Value;
if(value.vt==3||value.vt==14)
{
CString strTrans;
strTrans.Format("%ld",value.intVal);
Result.Add(strTrans);
}
else
if(value.vt==7)
{
COleDateTime time = value.date;
CString strTemp;
strTemp.Format("%d-%d-%d %s",time.GetYear(),time.GetMonth(),time.GetDay(),time.Format("%H:%M:%S"));
Result.Add(strTemp);
}
else
Result.Add(value.bstrVal);//
}
m_pRecordset->MoveNext();
}
m_pRecordset->Close();
return TRUE;
}
else
{
return FALSE;
}
}
/////////////////////////////////////////////////////////////////////////////
///关闭结果集
/////////////////////////////////////////////////////////////////////////////
void CPData::CloseRecordset()
{
if(m_pRecordset->State != adStateClosed)
m_pRecordset->Close();
}
BOOL CPData::ExecuteTrans(CStringArray& aSql)
{
try{
int nNum = aSql.GetSize();
m_pConnection->BeginTrans();
for(int i=0;i<nNum;i++)
{
CString strSql = aSql.GetAt(i);
m_pConnection->Execute((_bstr_t)aSql.GetAt(i),NULL,adCmdText);
}
m_pConnection->CommitTrans();
return TRUE;
}
catch(_com_error& e)
{
m_pConnection->RollbackTrans();
AfxMessageBox(e.Description()+"F");
return FALSE;
}
}
发表评论
-
简单内存泄漏检测方法 解决 Detected memory leaks! 问题
2012-04-29 16:46 1240我的环境是: XP SP2 . VS2003 最近在一 ... -
ADO游标集打开的位置
2011-10-13 08:48 954CursorLocation 属性 (ADO) ... -
__stdcall,__cdecl,_cdecl,_stdcall,__fastcall,_fastcall 区别简介
2011-09-20 17:31 1309http://apps.hi.baidu.com/sha ... -
VC++动态链接库(DLL)非MFC DLL
2011-09-08 18:36 724http://www.duote.com/tech/5/149 ... -
VS2008环境下,C++生成Dll文件C++调用Dll文件(非MFC)
2011-09-08 17:34 5493生成Dll文件 新建项目, ... -
基于Visual C++6.0的DLL编程实现
2011-09-08 17:20 851一、前言 自从微 ... -
C++ ADO Oracle 绑定变量
2011-09-08 16:10 1627vc 6.0,ado,oracle。 _Rec ... -
C++ ADO数据库
2011-09-08 13:29 1318#import "c:\program files\ ...
相关推荐
1. **ADO数据库操作**: - **连接数据库**:使用CADOConnection类建立与数据库的连接。需要设置ConnectionString属性,包含数据库类型、服务器地址、数据库名、用户名和密码等信息。 - **执行SQL语句**:创建...
`VC ADO数据库操作类(ado2)`是一个专门为VC++设计的类库,简化了数据库操作,使开发者能够更加高效地处理数据库任务。 `ado2.cpp`和`ado2.h`是这个类库的核心文件,其中`ado2.cpp`包含了类库的实现细节,而`ado2.h`...
封装类中,可能包括填充记录集、移动记录、添加新记录、更新和删除记录的方法。 4. **参数对象(Parameter Object)**:用于在命令对象中传递参数,常用于存储过程。 在`Ado.cpp`和`Ado.h`文件中,我们可以期待...
【VC与ADO数据库操作】 在VC++开发数据库应用程序时,ADO(ActiveX Data Objects)是一种常用的接口,它基于OLE DB,提供了一种高效且易于使用的数据访问方式。ADO简化了数据库交互,使得开发者无需深入理解底层的...
例如,“第21章 ADO数据库编程”很可能包含了一系列的实例,讲解如何使用MFC ADO进行数据库操作,包括连接数据库、执行查询、处理结果集等步骤。 总之,MFC ADO为VC程序员提供了一种高效、灵活的数据库访问方式,...
本代码实例将展示如何在VC++中通过MFC封装ADO来实现对数据库的操作。 首先,理解ADO的基本概念是非常重要的。ADO主要包含几个核心组件,如Connection、Command、Recordset和Field等。Connection对象用于建立与数据...
这个"VC下ADO访问数据库的类"源码是一个实用的工具,它封装了ADO的基本操作,方便开发者在VC项目中快速实现数据库的读写功能。 首先,我们需要了解ADO的核心组件。主要包括: 1. **Connection对象**:这是ADO的...
ADO封装类是将ADO接口进行包装,以便于开发者更简单、直观地操作数据库。这篇文档将深入探讨如何在VC中使用ADO封装类来实现数据库的访问。 首先,ADO是.NET Framework的一部分,但在VC++环境下,我们通常使用的是...
在实现过程中,作者创建了一个名为`cRecorder`的自定义数据库类,该类封装了ADO的基本接口,包括建立数据库连接、执行SQL语句以及对记录的增删查改操作。`cRecorder`类的成员变量和函数包括用于存储和操作数据库信息...
总结来说,"VC数据库操作类 ADO操作类"是一个强大的数据库操作工具,它通过封装ADO接口,为VC++开发者提供了简单易用的数据库操作API,使得数据库操作更加便捷高效。同时,考虑到其对OFFICE文档的支持,它在数据导入...
2. **在VC中用ADO数据库编程**: 这部分内容可能涵盖了如何在VC项目中引入ADO库,创建ADO对象,以及如何编写代码来执行基本的数据库操作,如打开、关闭连接,执行SELECT、INSERT、UPDATE、DELETE等SQL语句。 3. **...
描述:“vc++ADO数据库连接、.pdf”和标题相同,表明内容专注于VC++环境下如何操作ADO数据库连接,是具体实现数据库交互的技术文档。 标签:未提供标签信息。 部分内容提取的知识点如下: 1. ADO技术概述: ADO...
首先,你需要包含必要的头文件,如`#include <afxdb.h>`,这将引入ADO的MFC封装类,如`CDatabase`和`CRecordset`。然后,创建一个`CDatabase`对象,设置正确的连接字符串(包括数据库路径、用户名、密码等信息),...
整理文件发现,参考接口说明: http://www.vckbase.com/module/articleContent.php?id=469 ...源码基于win平台下的MFC 【名 称】: ADO 封装类. 【版 本】: 0.20 【作 者】: 成真 【E-mail】: anyou@sina.com
在这个场景中,"ADO封装类文件 数据库访问"指的是在VC6.0环境下,已经编写完成的用于简化ADO操作的C++类库,包括两个文件:ADOConn.h和ADOConn.cpp。 **ADOConn.h** 文件通常会定义一个名为ADOConn的类,这个类是对...
标题中的"vc.net_ADO_MSSQL.RAR_SQL 封装类_SQL VC 学生_VC.NET 数据库_c++ ado访问类"揭示了主要的技术栈和目标。VC++.NET是Microsoft的C++编译器与.NET框架的结合,用于构建Windows应用程序。ADO是Microsoft提供的...
"ADO操作封装类"可能是将上述ADO对象的功能进行包装,提供了一套面向对象的API,使得开发者可以通过更简洁的接口来完成数据库操作,例如创建连接、执行SQL、处理结果集等。封装类可能还包括错误处理、事务管理、性能...
ADO封装类使得开发者能够更简单、方便地执行SQL语句并操作数据库,无需深入了解底层的数据库通信细节。本文将深入探讨如何使用ADO在VC++中进行数据库操作,并基于提供的文件`SqlServer.cpp`、`SqlServer.h`以及可能...