MFC如何操作access数据库

我这里做了一个封装

成员变量

_ConnectionPtr m_pConnection; //命令对象指针

_RecordsetPtr m_pRecordset; //记录集

成员函数:

关于access数据库操作的一些基本方法:

/*

函数功能:链接数据库

参数:链接语句

返回值:TRUE 成功 FALSE 失败

*/

BOOL OpenDatabase(CString strConection)

{

//创建Connection 对象

hr = m_pConnection.CreateInstance("ADODB.Connection");

if (SUCCEEDED(hr))

{

//连接数据库

if (SUCCEEDED(m_pConnection->Open(strConnect, "", "", adModeUnknown)))

{

return TRUE;

}

}

}

使用方法:

strConection += "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=../ReworkSystemVT_360.accdb";

if (!m_Access.OpenDatabase(strConection))

{

MessageBoxW(_T("数据库链接发生错误"), L"提示");

return FALSE;

}

/*

函数功能:断开数据库链接

返回值:TRUE 成功 FALSE 失败

*/

BOOL CloseDatabase();

/*

函数实现功能:查询数据库

参数:sql语句 如:select *from 表名

返回值:返会查询结果

*/

_RecordsetPtr Select(CString sql);

{

_bstr_t CommandText(sql);

m_pRecordset.CreateInstance("ADODB.Recordset");

m_pRecordset->Open(CommandText, m_pConnection.GetInterfacePtr(), adOpenDynamic, adLockBatchOptimistic, adCmdText);

}

CString sql;

sql = "select *from TeFenXi WHERE Name1 = '";

sql +="abc" ;

sql += "'";

_RecordsetPtr Rec = m_pAccess->Select(sql);

while(!Rec->sdoEOF)

{

str = Rec->GetCollect("s1"); //列名

m_nzValues[0][m_iCount1] = _ttof(str);

str = Rec->GetCollect("s2");

m_nzValues[1][m_iCount1] = _ttof(str);

Rec->MoveNext();

}

/*

函数功能:实现对数据库的操作 增、删、改

参数:执行的sql语句

返回值:TRUE 成功

*/

BOOL Execute(CString sql)

{

_bstr_t CommandText(sql);

_variant_t RecordsAffected;

m_pConnection->Execute(CommandText, &RecordsAffected, adCmdText);

}

sql = "delete from TeFenXi WHERE Name1 = '";

sql += str;

sql += "'";


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部