最近在网上看到很多朋友需要操作数据库的类,很多写出来都用到了数据源这个鬼东西。故写此文帮助那些初学者
注一句:千万别对数据源产生依赖
********************************************************************************************************************
DATA.H文件:
/*
*类名:CData
*描述:完成数据库操作
*作者:李玉宝
*BLOG:http://hi.baidu.com/anglecloudy
*/
#pragma once
//导入数据库DLL
#import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","rsEOF")
class CData
{
public:
CData(void);
//得到数据集
_RecordsetPtr GetRs(CString strSql);
//执行SQL语句
bool ExecuteSql(CString& strSql);
public:
~CData(void);
private:
_ConnectionPtr m_conn;
_RecordsetPtr m_rs;
};
*************************************************************************************************************************
DATA.CPP文件
#include "StdAfx.h"
#include "Data.h"
CData::CData(void)
{
//初始化COM
::CoInitialize(NULL);
try
{
m_conn.CreateInstance("ADODB.Connection");
CString conn="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=AngleFinance.mdb";
//SQL SERVER连接字符串
//CString conn="Driver={SQL Server};server=(local);uid=sa;database=pubs";//local可以改为127.0.0.1
if(FAILED(m_conn->Open((_bstr_t)conn,"","",-1)))
{
::MessageBox(NULL,"数据库连接失败","错误",MB_ICONEXCLAMATION);
return;
}
}
catch(...)
{
::MessageBox(NULL,"数据库连接出现异常","错误",MB_ICONEXCLAMATION);
}
}
CData::~CData(void)
{
if(m_rs!=NULL)
m_rs->Close();
m_rs.Release();
m_conn->Close();
m_conn.Release();
::CoUninitialize();
}
_RecordsetPtr CData::GetRs(CString strSql)
{
try
{
m_rs.CreateInstance("ADODB.Recordset");
m_rs=m_conn->Execute((_bstr_t)strSql,NULL,adCmdText);
}
catch(...)
{
}
return m_rs;
}
bool CData::ExecuteSql(CString& strSql)
{
try
{
m_conn->Execute((_bstr_t)strSql,NULL,adCmdText);
return true;
}
catch(...)
{
return false;
}
}