怎么将MFC从串口获取的数据实时存储到ACCES数据库中呢

怎么将MFC从串口获取的数据实时存储到ACCES数据库中呢,第1张

直接利用你的 ado 对象调用 sql 的 insert 指令插入记录即可。我不知道你用的什么方式(或者说什么包装类)连接的 access ,所以也无法给出具体的代码。如果可以,你可以贴出部分你连接access时的代码我看下。

如果你是用原生 ado *** 作的话,代码应该类似下面,注意这段代码是写完一条记录就立即就关闭的,你可以等都写完了再关闭:

CoInitialize(NULL);

_ConnectionPtr ppConn(__uuidof(Connection));

_RecordsetPtr ppRst(__uuidof(Recordset));

ppConn->ConnectionString="Provider=MicrosoftJetOLEDB40;Data Source=D:\\testmdb;Persist Security Info=False";

ppConn->Open("","","",adConnectUnspecified);

CString szSQl; 

CString INS_name; 

CString INS_age; 

GetDlgItemText(IDC_EDIT1,INS_name);

GetDlgItemText(IDC_EDIT2,INS_age);

//下面这两行负责写入数据

szSQlFormat("insert into m_USER (pt_name,pt_age) values ('%s',%d)",INS_name,atol(INS_age));

ppRst=ppConn->Execute(_bstr_t(szSQl),NULL,adCmdText);

ppConn->Close();

ppRstRelease();

ppConnRelease();

CoUninitialize( );

// txl3cpp: 定义应用程序的类行为。

//

#include "pchh"

#include "frameworkh"

#include "txl3h"

#include "txl3Dlgh"

#ifdef _DEBUG

#define new DEBUG_NEW

#endif

// Ctxl3App

BEGIN_MESSAGE_MAP(Ctxl3App, CWinApp)

ON_COMMAND(ID_HELP, &CWinApp::OnHelp)

END_MESSAGE_MAP()

// Ctxl3App 构造

Ctxl3App::Ctxl3App()

{

// 支持重新启动管理器

m_dwRestartManagerSupportFlags = AFX_RESTART_MANAGER_SUPPORT_RESTART;

// TODO: 在此处添加构造代码,

// 将所有重要的初始化放置在 InitInstance 中

}

// 唯一的 Ctxl3App 对象

Ctxl3App theApp;

// Ctxl3App 初始化

BOOL Ctxl3App::InitInstance()

{

// 如果一个运行在 Windows XP 上的应用程序清单指定要

// 使用 ComCtl32dll 版本 6 或更高版本来启用可视化方式,

//则需要 InitCommonControlsEx()。 否则,将无法创建窗口。

INITCOMMONCONTROLSEX InitCtrls;

InitCtrlsdwSize = sizeof(InitCtrls);

// 将它设置为包括所有要在应用程序中使用的

// 公共控件类。

InitCtrlsdwICC = ICC_WIN95_CLASSES;

InitCommonControlsEx(&InitCtrls);

CWinApp::InitInstance();

AfxEnableControlContainer();

// 创建 shell 管理器,以防对话框包含

// 任何 shell 树视图控件或 shell 列表视图控件。

CShellManager pShellManager = new CShellManager;

// 激活“Windows Native”视觉管理器,以便在 MFC 控件中启用主题

CMFCVisualManager::SetDefaultManager(RUNTIME_CLASS(CMFCVisualManagerWindows));

// 标准初始化

// 如果未使用这些功能并希望减小

// 最终可执行文件的大小,则应移除下列

// 不需要的特定初始化例程

// 更改用于存储设置的注册表项

// TODO: 应适当修改该字符串,

// 例如修改为公司或组织名

SetRegistryKey(_T("应用程序向导生成的本地应用程序"));

Ctxl3Dlg dlg;

m_pMainWnd = &dlg;

INT_PTR nResponse = dlgDoModal();

if (nResponse == IDOK)

{

// TODO: 在此放置处理何时用

// “确定”来关闭对话框的代码

}

else if (nResponse == IDCANCEL)

{

// TODO: 在此放置处理何时用

// “取消”来关闭对话框的代码

}

else if (nResponse == -1)

{

TRACE(traceAppMsg, 0, "警告: 对话框创建失败,应用程序将意外终止。\n");

TRACE(traceAppMsg, 0, "警告: 如果您在对话框上使用 MFC 控件,则无法 #define _AFX_NO_MFC_CONTROLS_IN_DIALOGS。\n");

}

// 删除上面创建的 shell 管理器。

if (pShellManager != nullptr)

{

delete pShellManager;

}

#if !defined(_AFXDLL) && !defined(_AFX_NO_MFC_CONTROLS_IN_DIALOGS)

ControlBarCleanUp();

#endif

// 由于对话框已关闭,所以将返回 FALSE 以便退出应用程序,

// 而不是启动应用程序的消息泵。

return FALSE;

}

1、获取对话框上编辑框的内容有好几方法,

第一种直接调用成员函数:CString str; GetDlgItemText(编辑框控件ID号,str)

第二种也是调用成员函数:CString str; GetDlgItem(编辑框控件ID号)->GetWindowText(str);

第三种方法直接绑定编辑框控件的对象,DDX_Control(编辑框控件ID,m_obj),obj->GetWindowText(str),DDX_Text(编辑框控件ID,m_str);调用UpdateData()获取str,m_str的值即可

2、具体入库,是你的数据库处理方面了,

你的标准参数表在哪儿?

如果你的标准参数在数据库中的话

你就要定义一个cdatabase类的对象,然后用他来打开数据库。然后定义一个crecordset类的对象,用它来进行对数据库的select查询(这个查询的结果最后会返回至对象中)。然后你在把这个对象里的内容和对话框中每个文本框内的数据进行比较就可以了啊。

具体可能比较复杂,但是思路还是比较简单的,如果有不会的

可以继续追问

CString strTempFilePath = “你要保存的文件名";

CFile fileNow(strTempFilePath, CFile::modeWrite|CFile::modeCreate|CFile::typeBinary);

while()

{

fileNowWrite((BYTE )&buffer, sizeof(DownLoadDB));

}

fileNowFlush();

fileNowClose();

以上就是关于怎么将MFC从串口获取的数据实时存储到ACCES数据库中呢全部的内容,包括:怎么将MFC从串口获取的数据实时存储到ACCES数据库中呢、MFC中怎么在编辑框中输出从数据库表中读取的信息、MFC中如何获取编辑框的内容然后将其添加到数据库中。。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9508111.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-29
下一篇2023-04-29

发表评论

登录后才能评论

评论列表(0条)

    保存