S.l.e!ep.¢%

像打了激速一样,以四倍的速度运转,开心的工作
简单、开放、平等的公司文化;尊重个性、自由与个人价值;
posts - 1098, comments - 335, trackbacks - 0, articles - 1
  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理
VC操作数据库类 绝对简单易懂 VC操作SQL SERVER ACCESS
2008-12-08 16:12

最近在网上看到很多朋友需要操作数据库的类,很多写出来都用到了数据源这个鬼东西。故写此文帮助那些初学者

注一句:千万别对数据源产生依赖

********************************************************************************************************************

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;
}
}