实现一个简单的程序,能够连接到ACCESS数据库,读取数据库中的中的记录,并能够进行添加、修改、删除记录

2024-12-02 16:56:14
推荐回答(1个)
回答1:

二.访问数据库程序 1需求分析: 此系统实现如下系统功能:(1)使得学生的管理工作更加清晰、条理化、自动化。(2)查询学生基本资料,容易地完成学生信息的查询操作。(3) 设计人机友好界面,功能安排合理,操作使用方便,并且进一步考虑系统在安全性,完整性,并发控制,备份和恢复等方面的功能要求。2.系统功能设计: 实现功能:对表实行删除一个记录、移除一个记录和増加一个录。 ODBC应用程序3. 程序流程: 应用程序使用基于对话框的MFC应用程序实现,各种操作都是通过对话框中的控件来实现。(1)建立一个ACCESS数据库。(2)建立ODBC数据源,并且连接数据源。 (3)数据库应用程序中的文档和视图文档视图和数据库有很密切的关系,它关系到程序的设计结构。 (4)连接ACCESS数据库 4. 部分实现代码。 BOOL CODBC2View::OnMove(UINT nIDMoveCommand) { switch(nIDMoveCommand) {case ID_RECORD_PREV: m_pSet->MovePrev(); if(!m_pSet->IsBOF()) break; //如果移到记录集的开始,自动执行MoveFirst函数 case ID_RECORD_FIRST: m_pSet->MoveFirst(); break; case ID_RECORD_NEXT: m_pSet->MoveNext(); if(!m_pSet->IsEOF()) break; if(!m_pSet->CanScroll()) {//清空屏幕 m_pSet->SetFieldNull(NULL); break; } case ID_RECORD_LAST: m_pSet->MoveLast(); break; default: //异常情况 ASSERT(FALSE); } //交换数据 UpdateData(FALSE); return TRUE; //不再需要这个父类的函数 //return CRecordView::OnMove(nIDMoveCommand);}void CODBC2View::OnMoveToRecord() { CMoveToRecord dlgMoveTo; //创建CMoveToRecord类的对象实例 if(dlgMoveTo.DoModal()==IDOK) {CRecordset *pSet=OnGetRecordset(); //获得指向数据库记录的指针 if(pSet->CanUpdate() && !pSet->IsDeleted()) //确认所有的修改已经保存 {pSet->Edit(); if(!UpdateData()) return; pSet->Update(); } pSet->SetAbsolutePosition(dlgMoveTo.m_RecordID); //设置新的位置 UpdateData(FALSE); //更新表单 }}void CODBC2View::OnDeleteRecord() { CRecordsetStatus m_cStatus; try{m_pSet->Delete();} catch(CDBException* m_pEx) {AfxMessageBox(m_pEx->m_strError); m_pEx->Delete(); m_pSet->MoveFirst(); //失败的话,将记录指针移到第一个记录 UpdateData(FALSE); return; } m_pSet->GetStatus(m_cStatus); if(m_cStatus.m_lCurrentRecord==0) m_pSet->MoveFirst(); //删除了最后一个记录else m_pSet->MoveNext(); UpdateData(FALSE);}void CODBC2View::OnUpdateDeleteRecord(CCmdUI* pCmdUI) { pCmdUI->Enable(!m_pSet->IsEOF()); }void CODBC2View::OnAddRecord() { CRecordset * pSet=OnGetRecordset();//获取指向数据集的指针 if(pSet->CanUpdate() && !pSet->IsDeleted())//确认对数据集的任何修改均已经保存 {pSet->Edit(); if(!UpdateData()) return; pSet->Update(); }long m_lNewID=m_pSet->GetMaxID()+1; //获取新的ID值 m_pSet->AddNew(); //添加一个新记录 m_pSet->m___ID=m_lNewID; //设置新的ID标识 m_pSet->Update(); //保存新的记录 m_pSet->Requery(); //刷新数据集 m_pSet->MoveLast(); //游标移到最后一条记录 UpdateData(FALSE); //更新表单}5.经编译运行得