284-1上位机VC MFC使用OLE DB添加删除数据库记录
284-1上位机VC MFC使用OLE DB添加删除数据库记录OLE DB添加删除记录功能展示
使用OLE DB技术添加删除记录与之前介绍的ODBC方法相似,但也有不同之处,我们当前例程演示如何使用OLE DB技术添加与删除记录功能,效果如图,点击<添加记录>在编辑框准备一记录,再点击<保存记录>可保存一条完整记录,点击<删除记录>删除当前记录;
要点提示
通过例程代码可以知道,添加记录可以使用函数Insert()删除记录可以使用函数Delete(); 在调用INSERT函数插入记录时,记得提前调用 UpdateData(TRUE);刷新编辑框内容,不然数据保存不全;
实现功能
1.事先创建一数据源Students,再新建基于单文档的应用程序,数据表选择Basic,具体的创建过程可参考随后的视频演示;
2. 参照例程界面,添加四个编辑框ID分别为IDC_STUID,IDC_STUNAME,IDC_STUADD,IDC_STUTEL
3.修改向导为我们创建的类Cbasic的成员变量// wchar_t m_StuName[26];
// wchar_t m_StuAdd[26];// wchar_t m_StuTel[26];TCHAR m_StuName[51];TCHAR m_StuAdd[51];TCHAR m_StuTel[51];
及BEGIN_COLUMN_MAP(CBasic)内的三行内容// COLUMN_ENTRY_TYPE(2, DBTYPE_WSTR, m_StuName)
// COLUMN_ENTRY_TYPE(3, DBTYPE_WSTR, m_StuAdd)
// COLUMN_ENTRY_TYPE(4, DBTYPE_WSTR, m_StuTel)
COLUMN_ENTRY(2, m_StuName) COLUMN_ENTRY(3, m_StuAdd) COLUMN_ENTRY(4, m_StuTel)
4.在View视窗类的DoDataExchange()函数中添加代码
DDX_Text(pDX,IDC_STUID,m_pSet->m_StuID DDX_Text(pDX,IDC_STUNAME,m_pSet->m_StuName,51);
DDX_Text(pDX,IDC_STUADD,m_pSet->m_StuAdd,51);
DDX_Text(pDX,IDC_STUTEL,m_pSet->m_StuTel,51);
5.再在视窗类添加变量BOOL m_bAddRecord;初始为 m_bAddRecord=FALSE;
6。依次添加按钮<添加记录><保存记录>< 删除记录>关联点击消息响应函数
void CGkbc8View::OnAdd()
{
m_bAddRecord=TRUE;//使处于增加记录状态
m_pSet->ClearFields();//清空字段,添加记录
UpdateData(FALSE);//更新对话框
}
void CGkbc8View::OnSave()
{
UpdateData(TRUE);
if(m_bAddRecord)
{
m_bAddRecord=FALSE;//使改变状态
if(FAILED(m_pSet->Insert()))//插入记录
{
AfxMessageBox("插入记录失败!!",MB_ICONEXCLAMATION);
m_pSet->MoveFirst();//移动到第一条记录
}
}
else if(FAILED(m_pSet->SetData(0)))
UpdateData(FALSE);
}
void CGkbc8View::OnDelete()
{
HRESULT hResult = m_pSet->Delete();
if( FAILED( hResult ) )//出错
AfxMessageBox( _T( "Unable to delete the record" ) );
else
{ //移到下一条记录并取出数据
hResult = m_pSet->MoveNext();
if( hResult != S_OK )
m_pSet->MoveFirst();//移动到第一条记录
//为控件赋值
SetDlgItemInt(IDC_STUID,m_pSet->m_StuID);
SetDlgItemText(IDC_STUNAME,m_pSet->m_StuName);
SetDlgItemText(IDC_STUADD,m_pSet->m_StuAdd);
SetDlgItemText(IDC_STUTEL,m_pSet->m_StuTel);
}
}
7.添加虚函数OnMove()
BOOL CGkbc8View::OnMove(UINT nIDMoveCommand)
{
OnSave(); //保存记录
return COleDBRecordView::OnMove(nIDMoveCommand);
}
我们来演示下功能实现的整个过程
如果您认可,可联系功能定制! 如果您着急,充值会员可直接联系发您资料!
|