好文档 - 专业文书写作范文服务资料分享网站

mfc使用ado连接access数据库

天下 分享 时间: 加入收藏 我要投稿 点赞

1.设置数据源

打开控制面板--->系统和安全--->管理工具--->ODBC Data Sources(32 bit) 这里需要注意的是,vc6.0是32位的,因此这里的数据源也必须是32位的,否则是连接不上的,

这里我使用的是ACCESS数据库,数据源的配置如下:

2.创建包含数据库的MFC对话框(其它也可以)工程,新建ADOConn类

在工程中我们需要新建一个普通类ADOConn

然后在ADOConn类头文件中加入以下导入声明和变量、函数声明:

ADOConn.h--------------------------------------------------------------------------------- #import \no_namespace rename(\引入ADO库文件

public:

_ConnectionPtr m_pConnection;//连接对象指针 _RecordsetPtr m_pRecordset;//记录集对象指针 _CommandPtr m_pCommand;//命令对象指针 ADOConn();

virtual ~ADOConn();

BOOL OnInitADOConn(CString Connstr);//初始化连接数据库 BOOL ExecuteSQL(CString strSQL);//执行SQL语句 BOOL ExecuteProc(CString ProcName);//执行存储过程

BOOL GetCollect(CString FieldName,CString & strDest);//获得某个字段的值 BOOL GetRecordSet(CString strSQL);//获得记录集 int GetRecordCount();//获得记录数

//判断表TableName中是否存在字段KeyName的值为KeyValue的记录 BOOL RecordExist(CString TableName,CString KeyName,CString KeyValue); BOOL MoveFirst();//移动到第一条记录 BOOL MoveNext();//移动到下一条记录 BOOL Close();//关闭记录集

BOOL CloseADOConnection();//关闭连接

void dump_com_error(_com_error &e);//错误详细信息

ADOConn.h---------------------------------------------------------------------------------

然后在ADOConn类源文件中加入函数实现:

ADOConn.cpp--------------------------------------------------------------------------------- ADOConn::ADOConn()//构造函数 { }

ADOConn::~ADOConn()//析构函数 {

}

BOOL ADOConn::OnInitADOConn(CString ConnStr)//初始化连接数据库 {

try{

m_pRecordset.CreateInstance(\ m_pCommand.CreateInstance(\ m_pConnection.CreateInstance(\ _bstr_t strConnect=(_bstr_t)ConnStr;

m_pConnection->Open((_bstr_t)strConnect,\ AfxMessageBox(\数据库连接成功\ return true;

}catch(_com_error e){

AfxMessageBox(\数据库连接失败\ return false; } }

BOOL ADOConn::ExecuteSQL(CString strSQL)//执行SQL语句 {

try{

m_pConnection->BeginTrans();

m_pConnection->Execute(_bstr_t(strSQL),NULL,adCmdText); m_pConnection->CommitTrans(); return true; }catch(_com_error e) {

m_pConnection->RollbackTrans();

AfxMessageBox(\执行SQL语句失败\ return false; } }

BOOL ADOConn::ExecuteProc(CString ProcName)//执行存储过程 {

try{

m_pCommand->ActiveConnection=m_pConnection; m_pCommand->CommandText=_bstr_t(ProcName); m_pCommand->Execute(NULL,NULL,adCmdStoredProc); return true;

}catch(_com_error e){

AfxMessageBox(\执行存储过程失败\ return false; } }

BOOL ADOConn::GetCollect(CString FieldName,CString & strDest)//获得某个字段的值 {

VARIANT vt; try{

vt=m_pRecordset->GetCollect(_variant_t(FieldName)); switch(vt.vt){ case VT_BSTR:

strDest=(LPCSTR)_bstr_t(vt); break; case VT_DECIMAL:

strDest.Format(\ break; case VT_DATE: {

DATE dt=vt.date;

COleDateTime da=COleDateTime(dt);

strDest.Format(\GetDay(),da.GetHour(),da.GetMinute(),da.GetSecond()); break; }

case VT_NULL:

strDest=\ break; }

return true;

}catch(_com_error e){

AfxMessageBox(e.ErrorMessage()); return false; }

return true; }

BOOL ADOConn::GetRecordSet(CString strSQL)//获得记录集 {

try{

m_pCommand->CommandText=(_bstr_t)strSQL; m_pCommand->ActiveConnection=m_pConnection; m_pCommand->CommandType=adCmdText;

m_pRecordset=m_pCommand->Execute(NULL,NULL,adCmdText); return true;

}catch(_com_error e) {

AfxMessageBox(\执行select语句失败\ return false; } }

int ADOConn::GetRecordCount()//获得记录数 {

DWORD nRows = 0;

nRows=m_pRecordset->GetRecordCount(); if(nRows==-1) {

nRows=0;

if(m_pRecordset->adoEOF!=VARIANT_TRUE) m_pRecordset->MoveFirst(); while(m_pRecordset->adoEOF!=VARIANT_TRUE) {

nRows++;

m_pRecordset->MoveNext(); }

if(nRows>0)m_pRecordset->MoveFirst(); }

return nRows; }

//判断表TableName中是否存在字段KeyName的值为KeyValue的记录

BOOL ADOConn::RecordExist(CString TableName,CString KeyName,CString KeyValue) {

CString countstr;

countstr=\ BOOL ret =GetRecordSet(countstr); if(ret) {

int ret2=GetRecordCount(); if(ret2) return true; else return false; }

else return false; }

mfc使用ado连接access数据库

1.设置数据源打开控制面板--->系统和安全--->管理工具--->ODBCDataSources(32bit)这里需要注意的是,vc6.0是32位的,因此这里的数据源也必须是32位的,否则是连接不上的,这里我使用的是ACCESS数据库,数据源的配置如下:2.创建包含数据库的MFC对话框(其它也可以)工程,新建ADOC
推荐度:
点击下载文档文档为doc格式
9gqxa06z3375cln2z0an3ef8l940h6007pu
领取福利

微信扫码领取福利

微信扫码分享