VC(ADO类)
来源:互联网 发布:js实现图片360旋转 编辑:程序博客网 时间:2024/05/16 18:55
.H文件
// ADO.h: interface for the CADO class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_ADO_H__5A466E67_5E04_445D_9CB0_C64650B9AC68__INCLUDED_)
#define AFX_ADO_H__5A466E67_5E04_445D_9CB0_C64650B9AC68__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include <comdef.h>
#include "msado15.tlh"
class CADO
{
public:
_RecordsetPtr m_pRecordset;
public:
CADO();
virtual ~CADO();
BOOL openDB(CString m_strPathName, CString m_strName, CString m_strPassword, CString m_strProvider);
void close();
_RecordsetPtr search(const CString m_strSql);
BOOL dbDelete(const CString m_strSql);
BOOL update(const CString m_strSql);
BOOL insert(const CString m_strSql);
private:
void initConnection();
void initRecordSet();
void initCommand();
BOOL CommandIsValid();
BOOL RecordSetIsValid();
BOOL ConnectionIsValid();
private:
_CommandPtr m_pCommand;
_ConnectionPtr m_pConnection;
};
#endif // !defined(AFX_ADO_H__5A466E67_5E04_445D_9CB0_C64650B9AC68__INCLUDED_)
.CPP文件
// ADO.cpp: implementation of the CADO class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "YXRM.h"
#include "ADO.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CADO::CADO()
{
}
CADO::~CADO()
{
}
BOOL CADO::ConnectionIsValid()
{
if (m_pConnection == NULL)
return FALSE;
else
return TRUE;
}
BOOL CADO::RecordSetIsValid()
{
if (m_pRecordset == NULL)
return FALSE;
else
return TRUE;
}
BOOL CADO::CommandIsValid()
{
if (m_pCommand == NULL)
return FALSE;
else
return TRUE;
}
void CADO::initConnection()
{
if (!ConnectionIsValid())
m_pConnection.CreateInstance( __uuidof(Connection));
}
void CADO::initRecordSet()
{
if (!RecordSetIsValid())
m_pRecordset.CreateInstance(__uuidof(Recordset));
}
void CADO::initCommand()
{
if (!CommandIsValid())
m_pCommand.CreateInstance(__uuidof(Command));
}
BOOL CADO::openDB(CString m_strPathName, CString m_strName, CString m_strPassword, CString m_strProvider)
{
initConnection();
initRecordSet();
initCommand();
m_pConnection->Provider = _bstr_t(m_strProvider);
if(S_OK == m_pConnection->Open(_bstr_t(m_strPathName), _bstr_t(m_strName), _bstr_t(m_strPassword), adModeUnknown))
return TRUE;
else
return FALSE;
}
void CADO::close()
{
if (RecordSetIsValid())
{
if( m_pRecordset->State == adStateOpen)
m_pRecordset->Close();
}
if (ConnectionIsValid() || m_pConnection->State == adStateOpen)
{
m_pConnection->Close();
}
}
BOOL CADO::insert(const CString m_strSql)
{
try
{
if (!ConnectionIsValid() || m_pConnection->State == adStateClosed)
{
AfxMessageBox("DB closed");
//RAConnect(m_ConnectionString);
return FALSE;
}
if(!CommandIsValid())
{
initCommand();
}
m_pCommand->ActiveConnection = m_pConnection;
m_pCommand->CommandType = adCmdText;
m_pCommand->CommandText = _bstr_t(m_strSql);
_variant_t vNull;
vNull.vt = VT_ERROR;
vNull.scode = DISP_E_PARAMNOTFOUND;
m_pCommand->Execute(&vNull, &vNull, adCmdText);//m_pConnection->Execute(........)也可以
return TRUE;
}
catch(_com_error &e)
{
AfxMessageBox(e.Description());
return FALSE;
}
}
BOOL CADO::update(const CString m_strSql)
{
try
{
if (!ConnectionIsValid() || m_pConnection->State == adStateClosed)
{
AfxMessageBox("DB closed");
//RAConnect(m_ConnectionString);
return FALSE;
}
if(!CommandIsValid())
{
initCommand();
}
m_pCommand->ActiveConnection = m_pConnection;
m_pCommand->CommandType = adCmdText;
m_pCommand->CommandText = _bstr_t(m_strSql);
_variant_t vNull;
vNull.vt = VT_ERROR;
vNull.scode = DISP_E_PARAMNOTFOUND;
m_pCommand->Execute(&vNull, &vNull, adCmdText);
return TRUE;
}
catch(_com_error &e)
{
AfxMessageBox(e.Description());
return FALSE;
}
}
BOOL CADO::dbDelete(const CString m_strSql)
{
try
{
if (!ConnectionIsValid() || m_pConnection->State == adStateClosed)
{
AfxMessageBox("DB closed");
//RAConnect(m_ConnectionString);
return FALSE;
}
if(!CommandIsValid())
{
initCommand();
}
m_pCommand->ActiveConnection = m_pConnection;
m_pCommand->CommandType = adCmdText;
m_pCommand->CommandText = _bstr_t(m_strSql);
_variant_t vNull;
vNull.vt = VT_ERROR;
vNull.scode = DISP_E_PARAMNOTFOUND;
m_pCommand->Execute(&vNull, &vNull, adCmdText);
return TRUE;
}
catch(_com_error &e)
{
AfxMessageBox(e.Description());
return FALSE;
}
}
_RecordsetPtr CADO::search(const CString m_strSql)
{
try
{
if (!ConnectionIsValid() || m_pConnection->State == adStateClosed)
{
AfxMessageBox("DB closed");
//RAConnect(m_ConnectionString);
return NULL;
}
else
{
if (RecordSetIsValid())
{
if (m_pRecordset->State == adStateOpen)
m_pRecordset->Close();
}
else
{
initRecordSet();
}
if(!CommandIsValid())
{
initCommand();
}
m_pCommand->ActiveConnection = m_pConnection;
m_pCommand->CommandType = adCmdText;
m_pCommand->CommandText = _bstr_t(m_strSql);
_variant_t vNull;
vNull.vt = VT_ERROR;
vNull.scode = DISP_E_PARAMNOTFOUND;
m_pRecordset = m_pCommand->Execute(&vNull, &vNull, adCmdText);
return m_pRecordset.Detach();
}
}
catch(_com_error &e)
{
AfxMessageBox(e.Description());
return NULL;
}
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////调用/////////////////////////////////////////////
if(!(classAdo.openDB("db1.mdb","","","Microsoft.JET.OLEDB.4.0")))
return FALSE;
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- VC(ADO类)
- VC之ADO访问类
- ADO + VC
- VC ADO
- VC+ADO
- VC ADO
- vc ado
- ado vc++
- VC简易ADO调用SQL类
- VC++下封装ADO类以及使用方法
- VC基于ADO数据库类实现
- VC++中建立ADO操作类
- vc++ ado访问类 CAdoAcc.h
- VC++中的ADO宏
- VC知识库搜索ADO
- vc对ado操作
- ADO in VC++
- VC 与 ADO
- read AppFuse 9-BaseAction类分析
- 短篇随想——苹果
- 如何动态设置嵌套的iframe的高度?
- Delphi调节音量
- 生成安装包时错误,提示“不可恢复的生成错误”解决办法
- VC(ADO类)
- 又没克制住自己,郁闷
- dat
- 收藏几段SQL Server语句和存储过程
- CMarkup介绍(二)
- Win32环境下动态链接库(DLL)编程原理
- PL/Sql循序渐进全面学习教程--Oracle 选择自 hissan 的 Blog
- 出现了什么情况,我们知道内存条出现了质量问题?
- 在Dll中创建对话框并调用