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