.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共同实现数据库的操作 在VC中使用ADO开发数据库应用程序 用C++访问SQLServer2000的实例
这里实现ADO连接数据库的最简单代码,有利于初学数据库编程人员的参考,希望能对你有帮助!!!
vc 实现员工管理系统 登陆+ADO数据库编程(初始用户名和密码都是123,自己可以在程序中设定)
VC 结合ADO实现数据库版的DTree树叉菜单,这是一个与数据库相结合的树形菜单效果,在使用ADO技术时,需要导入一个ADO动态链接库msado15.dll,该动态库位于系统盘下的“Program Files\Common Files\System\ado\”目录...
ADO是一种基于com的数据库访问技术,它向用户提供了一组访问数据库的接口,用户可以在应用程序中通过这些接口类实现对数据库的各种操作。 设计一个电话本程序,包括电话号码的添加、更新和删除功能。 (1) 设计...
该程序实现了简单的数据读取功能。使用VC实现,后台服务器为SQL SERVER2005。使用了一些基本的ADO接口。
VC使用ADO Data和DataGrid控件实现遍历、修改、删除、添加 所有数据库都大同小异。
VC ADO 操作数据库 使用ADO连接数据库 实现了基本的连接和操作
VC ado 登录模块实现范例,因为使用ADO模块,所以要先初始化COM组件库,然后调用ADO库连接数据库,读取用户名密码是否与数据库的相符,相符则登录成功,不相符则弹出提示信息。本源码比较简单,演示了基本的基于...
手把手教你学会VC中利用ADO共同实现数据库的操作,个人工作学习所得,拿上来给新手分享
ADO类,实现vc连接数据库sql server 2008
使用ADO访问SQL Server数据库,实现学生信息的管理,封装了数据库访问类。
由于工作需要,辅助软件:VC实现的对数据库的读取、添加、修改;采用ado访问方式;借鉴SkinPlusPlusDLL.dll皮肤
详细介绍了如何实现数据库的连接及功能代码。
vc 中实现对Ado的封装(简单易用)支持环境vc++6.0以及 vs 2010,该实例封装了ADO相关基本操作,只需在你的程序中引入即可使用,一看便知,不多说了。。。。 特此说明:此资源乃网络收集
用vc实现的ADO方式数据库的浏览与更新程序!
用VC++实现的ADO对Access的操控 适合初学者
VC中用ADO连接ACCESS数据库,实现基本操作,很好的一个例子!!
在VC中利用ADO访问数据库来实现,学生信息管理系统。例子对于初学者非常适宜,希望对您有帮助!
用ADO实现数据库记录排序 用ADO实现数据库记录排序 用ADO实现数据库记录排序