int i=m_list.GetItemCount()//在列表的队尾添加,所以先获取行数
db.Open(Filepath)
Dbset.Open(AFX_DAO_USE_DEFAULT_TYPE,"SELECT * FROM DataTable",0)
Dbset.AddNew()//在记录集的队尾添加
Dbset.SetFieldValue("Name",_variant_t(m_name))
Dbset.SetFieldValue("Age",atol(m_age))//将CString格式转换为数据库规定的格式
Dbset.SetFieldValue("Extra",_variant_t(m_extra))
Dbset.Update()//一定要及时更新
Dbset.Close()
db.Close()//并关闭////////////////////////////
看这段代码,是把三个edit控件里的值写入Data.accdb数据库文件中。
直接利用你的 ado 对象调用 sql 的 insert 指令插入记录即可。我不知道你用的什么方式(或者说什么包装类)连接的 access ,所以也无法给出具体的代码。如果可以,你可以贴出部分你连接access时的代码我看下。
如果你是用原生 ado *** 作的话,代码应该类似下面,注意这段代码是写完一条记录就立即就关闭的,你可以等都写完了再关闭:
CoInitialize(NULL)_ConnectionPtr ppConn(__uuidof(Connection))
_RecordsetPtr ppRst(__uuidof(Recordset))
ppConn->ConnectionString="Provider=Microsoft.Jet.OLEDB.4.0Data Source=D:\\test.mdbPersist Security Info=False"
ppConn->Open("","","",adConnectUnspecified)
CString szSQl
CString INS_name
CString INS_age
GetDlgItemText(IDC_EDIT1,INS_name)
GetDlgItemText(IDC_EDIT2,INS_age)
//下面这两行负责写入数据
szSQl.Format("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()
ppRst.Release()
ppConn.Release()
CoUninitialize( )
比如将串口接收到的字符保存到access,可以定义一个全局函数void datastore(),在void CEx4Dlg::OnOnCommMscomm()中调用datastore,下面是具体的代码。
void CEx4Dlg::datastore()
{
_RecordsetPtr m_pRecordset
m_pRecordset.CreateInstance(__uuidof(Recordset))
try
{
m_pRecordset->Open("SELECT * FROM ado",// 查询DemoTable表中所有字段
m_pConnection.GetInterfacePtr(), // 获取库接库的IDispatch指针
adOpenDynamic,
adLockOptimistic,
adCmdText)
}
catch(_com_error *e)
{
AfxMessageBox(e->ErrorMessage())
}
UpdateData(false)
m_pRecordset->AddNew()
m_pRecordset->PutCollect("rec",_variant_t(m_strRecieve))
m_pRecordset->Update()
m_pRecordset->Close()
m_pRecordset = NULL
AfxMessageBox(_T("成功保存记录!"))
return
}
其他怎么连接数据库和串口接收数据应该会吧?
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)