vc怎么与SQL数据库连接?
老师要我们做课程设计,需要用到vc和数据库连接.但是不知道怎么连接,有哪位高手知道,给说下.谢谢!!!
#include "StdAfx.h"
#ifndef __CMYADO_H
#define __CMYADO_H
class CMyAdo
{
public:
CMyAdo();
~CMyAdo();
BOOL OpenAdo(LPCTSTR lpDSN);
_RecordsetPtr Query(LPCTSTR lpQuery);
BOOL Execute(LPCTSTR lpExcute);
void CloseAdo();
BOOL IsConnect(){return m_fConnected;}
private:
_ConnectionPtr m_connection;
_RecordsetPtr m_recordset;
_CommandPtr m_command;
CString m_strSource;
BOOL m_fConnected;
};
#endif
#include "CMyAdo.h"
CMyAdo::CMyAdo()
{
m_fConnected = FALSE ;
::CoInitialize(NULL);
}
CMyAdo::~CMyAdo()
{
if(m_recordset !=NULL)
m_recordset->Close() ;
m_recordset = NULL ;
CloseAdo() ;
::CoUninitialize();
m_fConnected = FALSE ;
}
BOOL CMyAdo::OpenAdo(LPCTSTR lpDSN)//CString source("Driver={SQLServer};Server=Uid=sa;Pwd=;Database=;");
{
HRESULT hr;
_bstr_t source(lpDSN);
_bstr_t user("");
_bstr_t pwd("");
try{
hr = m_connection.CreateInstance(__uuidof(Connection));
if(SUCCEEDED(hr))
hr = m_connection->Open(source, user, pwd, -1);
if(SUCCEEDED(hr))
hr = m_recordset.CreateInstance(__uuidof(Recordset));
if(SUCCEEDED(hr))
m_fConnected = TRUE;
else
m_fConnected = FALSE;
}
catch (_com_error &e){
MessageBox(0,e.ErrorMessage(),"错误",0);
m_fConnected = FALSE;
}
if(!m_fConnected) MessageBox(0,"ADO数据源初始化失败!","错误",0);
else m_strSource = (const char * )source;
return m_fConnected;
}
/* ADO 通用查询函数 */
/* 调用参数: 正确的SQL 查询语句. */
/* 可以对一个表查询,也可以对多个表查询 */
/* 返回一个纪录集 */
/* 如果成功返回一个非空的纪录集 */
/* 如果失败则返回一个NULL的纪录集 */
_RecordsetPtr CMyAdo::Query(LPCTSTR lpQuery)
{
m_recordset = NULL ;
_variant_t vRecsAffected ;
if(!m_fConnected) return NULL ;
try
{
m_recordset = m_connection->Execute(lpQuery,
&vRecsAffected,
adOptionUnspecified) ;
}
catch(_com_error e)
{
MessageBox(0,e.ErrorMessage(),"错误",0);
}
return m_recordset ;
}
/* ADO 通用SQL语句执行函数 */
/* 调用参数: 正确的SQL 查询语句. */
/* 可以对一个表插入 修改 删除 操作 */
/* 如果成功返回真 */
/* 如果失败返回假 */
BOOL CMyAdo::Execute(LPCTSTR lpExcute)
{
BOOL bRet = FALSE ;
_variant_t vRecsAffected ;
if(!m_fConnected) return NULL ;
try
{
m_connection->Execute(lpExcute,
&vRecsAffected,
adOptionUnspecified) ;
bRet = TRUE ;
}
catch(_com_error e)
{
MessageBox(0,e.ErrorMessage(),"错误",0);
}
return bRet ;
}
void CMyAdo::CloseAdo()
{
if (m_fConnected)
m_connection->Close() ;
}
连接的。。 要获取内容 BAIDU下吧