vc链接数据库和操作数据库的函数清单
这是我写的一个类,类名是ADOConn.cpp和ADOConn.h,主要作用就是把vc链接数据库和操作数据库的函数清单写在了这里面。把这个类加进vc中是可以直接运行的,你直接调用就行了。改一些路径,他可以对access,SqlServer等数据库进行很好的操作。
第一个是ADOConn.cpp
// ADOConn.cpp: implementation of the ADOConn class.
///////////////////////////////
#include "stdafx.h"
#include "myshoujiDlg.h" //主函数
#include "ADOConn.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
///////////////////////////////
// Construction/Destruction
////////////////////////////////
ADOConn::ADOConn()
{
}
ADOConn::~ADOConn()
{
}
void ADOConn::OnInitADOConn() //以调用access为例,其实调用SqlServer等也是一样的
{
::CoInitialize(NULL); //初始化COM组件
try
{
m_pConnection.CreateInstance("ADODB.Connection");
_bstr_t strConnect="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=shouji.mdb"; //链接数据库,这里是shouji数据库,可以根据具体情况改
m_pConnection->Open(strConnect,"","",adModeUnknown);
}
catch(_com_error e)
{
AfxMessageBox(e.Description());
}
}
_RecordsetPtr& ADOConn::GetRecordSet(_bstr_t bstrSQL)
{
try
{
if(m_pConnection==NULL)
OnInitADOConn();
m_pRecordset.CreateInstance(__uuidof(Recordset));
m_pRecordset->Open(bstrSQL,m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);
}
catch(_com_error e) //捕捉异常
{
e.Description();
}
return m_pRecordset;
}
BOOL ADOConn::ExecuteSQL(_bstr_t bstrSQL) //再打开数据库后,执行Sql语句
{
_variant_t RecordsAffected;
try
{
if(m_pConnection==NULL)
OnInitADOConn();
m_pConnection->Execute(bstrSQL,NULL,adCmdText);
return true;
}
catch(_com_error e)
{
e.Description();
return false;
}
}
void ADOConn::ExitConnect() //退出链接
{
if(m_pRecordset!=NULL)
m_pRecordset->Close();
m_pConnection->Close();
::CoUninitialize();
}
///////////////////////////////
#include "stdafx.h"
#include "myshoujiDlg.h" //主函数
#include "ADOConn.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
///////////////////////////////
// Construction/Destruction
////////////////////////////////
ADOConn::ADOConn()
{
}
ADOConn::~ADOConn()
{
}
void ADOConn::OnInitADOConn() //以调用access为例,其实调用SqlServer等也是一样的
{
::CoInitialize(NULL); //初始化COM组件
try
{
m_pConnection.CreateInstance("ADODB.Connection");
_bstr_t strConnect="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=shouji.mdb"; //链接数据库,这里是shouji数据库,可以根据具体情况改
m_pConnection->Open(strConnect,"","",adModeUnknown);
}
catch(_com_error e)
{
AfxMessageBox(e.Description());
}
}
_RecordsetPtr& ADOConn::GetRecordSet(_bstr_t bstrSQL)
{
try
{
if(m_pConnection==NULL)
OnInitADOConn();
m_pRecordset.CreateInstance(__uuidof(Recordset));
m_pRecordset->Open(bstrSQL,m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);
}
catch(_com_error e) //捕捉异常
{
e.Description();
}
return m_pRecordset;
}
BOOL ADOConn::ExecuteSQL(_bstr_t bstrSQL) //再打开数据库后,执行Sql语句
{
_variant_t RecordsAffected;
try
{
if(m_pConnection==NULL)
OnInitADOConn();
m_pConnection->Execute(bstrSQL,NULL,adCmdText);
return true;
}
catch(_com_error e)
{
e.Description();
return false;
}
}
void ADOConn::ExitConnect() //退出链接
{
if(m_pRecordset!=NULL)
m_pRecordset->Close();
m_pConnection->Close();
::CoUninitialize();
}
第二个是ADOConn.h
// ADOConn.h: interface for the ADOConn class.
////////////////////////////////
#if !defined(AFX_ADOCONN_H__A2B6E8CE_2220_4830_95F8_2911D1EAC453__INCLUDED_)
#define AFX_ADOCONN_H__A2B6E8CE_2220_4830_95F8_2911D1EAC453__INCLUDED_
#import "C:\program files\common files\system\ado\msado15.dll" no_namespace rename("EOF","adoEOF")
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
class ADOConn
{
public:
_ConnectionPtr m_pConnection;
_RecordsetPtr m_pRecordset;
public:
ADOConn();
virtual ~ADOConn();
void OnInitADOConn();
_RecordsetPtr&GetRecordSet(_bstr_t bstrSQL);
BOOL ExecuteSQL(_bstr_t bstrSQL);
void ExitConnect();
};
#endif // !defined(AFX_ADOCONN_H__A2B6E8CE_2220_4830_95F8_2911D1EAC453__INCLUDED_)
////////////////////////////////
#if !defined(AFX_ADOCONN_H__A2B6E8CE_2220_4830_95F8_2911D1EAC453__INCLUDED_)
#define AFX_ADOCONN_H__A2B6E8CE_2220_4830_95F8_2911D1EAC453__INCLUDED_
#import "C:\program files\common files\system\ado\msado15.dll" no_namespace rename("EOF","adoEOF")
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
class ADOConn
{
public:
_ConnectionPtr m_pConnection;
_RecordsetPtr m_pRecordset;
public:
ADOConn();
virtual ~ADOConn();
void OnInitADOConn();
_RecordsetPtr&GetRecordSet(_bstr_t bstrSQL);
BOOL ExecuteSQL(_bstr_t bstrSQL);
void ExitConnect();
};
#endif // !defined(AFX_ADOCONN_H__A2B6E8CE_2220_4830_95F8_2911D1EAC453__INCLUDED_)
希望对你有所帮助。
本文转自阿龙哥 51CTO博客,原文链接:http://blog.51cto.com/ililong/284962,如需转载请自行联系原作者