我现在要建立一个上位机,上位机要实现串口通信和添加数据库,串口通信已经实现了,现在需要添加数据库ADO,希望通过串口获取的数据能够保存到ADO数据库中,还要求能够从ADO数据库中读取相关的数据,显示到MFC创建的基于对话框的编辑框中,对ADO的了解比较少,在网上查了一些相关的ADO操作,只有一些基本的操作,而且只有修改ADO的数据,比如说添加数据,删除数据等,而且只是基于对话框的上的按钮来实现的,要想读取相关的数据,并能够将读取的数据以曲线的形式表示出来,该怎么做,如何将串口的数据写入创建的ADO数据库中,还请高手指导,是不是需要在通信协议里添加什么东西??
串口通讯是设备数据采集部分
读取的数据以曲线的形式表示出来,这是界面显示部分
将串口的数据写入创建的ADO数据库中,这是数据库读写部分
以上部分是相对独立的,共享的是存储数据的内存,即数组 数据库读写部分需要以下操作:1.通过SQLSERVER或者其他建立数据库的表等
2.使用ADO建立与数据库连接
3.通过ADO操作SQL语句来读写数据表的记录或者字段 具体参考VC6操作ADO方面的资料
我建立的数据库是Access的,穿件数据库的同时穿件了数据表
2.使用ADO建立与数据库连接
ADO数据库的链接按照相关的步骤已经连接上了
3.通过ADO操作SQL语句来读写数据表的记录或者字段
主要是这步不会做,我该怎样写相关的代码来读取数据库的内容?并将内容显示到我的编辑框中呢?再次我自己创建的数据库现在没有数据,自己写入一些数据是不是可以,然后该怎么做才能把自己写的数据显示到编辑框中,至于 “读取的数据以曲线的形式表示出来,这是界面显示部分”显示部分该怎么做?是要添加teechar这个控件吗??还请高手指导啊!!我的qq442931431,有时间晚上能交流一下吗??
网上例子大把,http://www.codeproject.com 上面有个ado封装类,很不错,应该也带简单的例子。 自己找,别什么都指望别人。
STDMETHODIMP CUserManager::AddMeter(IMeter *pMeter)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState()) // TODO: Add your implementation code here
HRESULT hr;
CString sql;
_ConnectionPtr adoConn;
_RecordsetPtr adoRs1;
DataCmn::IMeterPtr pTempMeter;
_variant_t v; if (pMeter == NULL)
return E_POINTER;
if (FAILED(hr = pMeter->QueryInterface(__uuidof(IMeter), (void**)&pTempMeter)))
return E_POINTER;
try
{
hr = adoConn.CreateInstance(__uuidof(Connection));
hr = adoRs1.CreateInstance(__uuidof(Recordset));
hr=adoConn->put_ConnectionTimeout(30);
hr = adoConn->Open((BSTR)m_ConnectionString, L"", L"", adCmdUnspecified);
sql= L" Meter ";
hr = adoRs1->Open((LPCTSTR)sql, (IDispatch *)adoConn, adOpenStatic,adLockOptimistic,adCmdTable);
hr = adoRs1->AddNew(); v = pTempMeter->MeterNo;
if (v.vt != VT_EMPTY)
adoRs1->PutCollect(L"MeterNo", v);
v = pTempMeter->Name;
if (v.vt != VT_EMPTY)
adoRs1->PutCollect(L"Name", v);
v = pTempMeter->UserID;
if (v.vt != VT_EMPTY)
adoRs1->PutCollect(L"UserID", v);
v = pTempMeter->Phase;
if (v.vt != VT_EMPTY)
adoRs1->PutCollect(L"Phase", v);
v = pTempMeter->Ratio;
if (v.vt != VT_EMPTY)
adoRs1->PutCollect(L"Ratio", v);
v = pTempMeter->CapID;
if (v.vt != VT_EMPTY)
adoRs1->PutCollect(L"CapID", v);
v = pTempMeter->Charge;
if (v.vt != VT_EMPTY)
adoRs1->PutCollect(L"Charge", v);
hr = adoRs1->Update();
hr = adoRs1->Close();adoRs1.Release();
pTempMeter.Release();
}
catch(_com_error e)
{
if(e.Description().length()>0)
return AtlReportError(__uuidof(UserManager), (BSTR)e.Description(), IID_IUserManager, e.Error());
else
return AtlReportError(__uuidof(UserManager), e.ErrorMessage(), IID_IUserManager, e.Error());
} return S_OK;
}