VC中ODBC数据库技术应用源程序详解之二(串口数据保存相关)
来源:互联网 发布:匈牙利算法 编辑:程序博客网 时间:2024/04/29 06:40
首先,按上一篇文章步骤一二,分别安装注册数据源及创建数据库。
然后开始以下的步骤:
1. 建立一个基于单文档的应用程序。生成新的工程名,本例为data2,在Step1中选择SDI,Step2中选择Database View Without File Support,同时在Step2对话框中,单击Data Source按钮,与上一篇文章一样,为CData2Set类选择注册数据库的SCORE表。
在这里作点说明:CDATA2Set类由MFC自动添加,这与上篇文章中在Step2中选择Head files only是不同的,CrecordView 对象是一个视图,是数据库应用程序的用户界面,由它来完成用户与数据库的交互工作,CrecordView 视图对象是基于对话框模板资源来创建的,并由对话框模板中的控件来显示CrecordSet 对象的数据记录。CrecordView 视图对象使用对话框数据交换机制(DDX)和记录字段交换机制(RFX)来实现表单控件和记录集字段之间的数据移动,并且自动为用户提供了记录集指针的移动(移向第一个记录、最后一个记录、下一个记录、上一个记录)和记录更新的操作。
最终选择和默认应如下图所示:
2. 打开RESOURCEVIEW在IDD_DATA2_FORM模板中加入编辑控制。分别为三个编辑控件(IDC_EDIT_NUMBER,IDC_EDIT_NAME,IDC_EDIT_SCORE),三个按钮控件。
3. 使用ClassWizard把编辑控制与记录集数据成员连接起来,注意加入变量时不需自己键入,只需在Member Viriable name的下拉列表中选择,最后结果应如下图所示:
4. 编译并测试应用程序,应该得到一个可工作的只有读操作的数据库应用程序
5. 加入菜单命令,为前面的三个按钮添加相应的成员函数。分别为OnButtonAdd、OnButtonClear、OnButtonDelete
6. 在CData2View类中重载OnMove函数(先要在ClassWizard中映射该函数)
BOOL CData2View::OnMove(UINT nIDMoveCommand)
{
// TODO: Add your specialized code here and/or call the base class
switch (nIDMoveCommand)
{
case ID_RECORD_PREV:
m_pSet->MovePrev();
if (!m_pSet->IsBOF())
break;
case ID_RECORD_FIRST:
m_pSet->MoveFirst();
break;
case ID_RECORD_NEXT:
m_pSet->MoveNext();
if (!m_pSet->IsEOF())
break;
if (!m_pSet->CanScroll()) {
// Clear out screen since we're sitting on EOF
m_pSet->SetFieldNull(NULL);
break;
}
case ID_RECORD_LAST:
m_pSet->MoveLast();
break;
default:
// unexpected case value
ASSERT(FALSE);
}
// show results of move operation
UpdateData(FALSE);
return TRUE;
// return CRecordView::OnMove(nIDMoveCommand);
}
7. 编辑按钮控制函数,分别加入下列代码:
void CData2View::OnButtonAdd()
{
// TODO: Add your control notification handler code here
m_pSet->AddNew();
UpdateData(TRUE);
if (m_pSet->CanUpdate()) {
m_pSet->Update();
}
if (!m_pSet->IsEOF())
{
m_pSet->MoveLast();
}
// m_pSet->Requery(); // for sorted sets
UpdateData(FALSE);
}
void CData2View::OnButtonClear()
{
// TODO: Add your control notification handler code here
m_pSet->SetFieldNull(NULL);
UpdateData(FALSE);
}
void CData2View::OnButtonDelete()
{
// TODO: Add your control notification handler code here
CRecordsetStatus status;
try {
m_pSet->Delete();
}
catch(CDBException* e) {
AfxMessageBox(e->m_strError);
e->Delete();
m_pSet->MoveFirst(); // lost our place!
UpdateData(FALSE);
return;
}
m_pSet->GetStatus(status);
if (status.m_lCurrentRecord == 0) {
// We deleted last of 2 records
m_pSet->MoveFirst();
}
else {
m_pSet->MoveNext();
}
UpdateData(FALSE);
}
8. 再次编译并测试应用程序,现在可以加入、修改以及删除记录。打开ACCESS数据库,可以看到文件已作为相应的改动。
9. 最后,我们来看看如何与串口数据关联起来,方法应该是在串口的接收事件驱动函数OnCommunication()中将串口接收数据送到数据库的成员保存,相当于在OnCommunication()函数中调用OnButtonAdd()函数,具体方法我们将在下一篇关于CserialPort类的应用中详细说明。
- VC中ODBC数据库技术应用源程序详解之二(串口数据保存相关)
- VC中ODBC数据库技术应用源程序详解之一(串口数据保存相关)
- VC中ODBC数据库技术应用源程序详解之一(串口数据保存相关)
- VC中ODBC数据库技术应用源程序详解
- VC中ODBC数据库技术应用源程序详解之一
- VC中在基于单文档(SDI)程序中应用MSCOMM串口通讯控件编程详细说明(附源程序)
- 串口调试助手源程序(二)
- 串口调试助手源程序VC++
- VC++ ODBC 读取数据库中的数据保存到EXCEL
- 在基于单文档(SDI)程序中应用MSCOMM串口通讯控件(附源程序)
- Teradata 数据库技术概略之二 —— 数据分布机制(1) 概述
- Teradata 数据库技术概略之二 —— 数据分布机制(1) 概述
- VC连接ODBC数据
- VC++中API串口通信详解
- VC++中API串口通信详解
- 串口调试助手VC源程序及编程详细过程(转载)
- matlab中数据保存的相关指令
- webtrends之ODBC源数据获取(二)——ACCESS访问篇
- SQL Server中约束的介绍
- 英语
- 中国对外贸易电子商务框架
- 使用Carbide C/C++ 遇到的第一个错误
- →『C/C++ 笔试、面试题目大汇总(16-20)』
- VC中ODBC数据库技术应用源程序详解之二(串口数据保存相关)
- XForms 教程
- 对UNIX/Linux风格的顿悟!
- matlab7.0运行后自动关闭解决方案
- VC编程规范-程序员们都应该这样写代码
- Code Analyser 新算法测试通过
- sql 2005的一点小技巧
- 怎样睡眠小于一秒
- 请用代码简单描述一下Singleton、抽象工厂、Bridge、Composite(任选三个)的设计模式的概念