void CControlPane::UpdateTarget(CSARACOMTarget *pAisTarget)
{
UpdateData();
try
{
DataRecord->Open("Select * from AIS.dbo.Dynamic", // 查询DemoTable表中所有字段
theApp.DataConn.GetInterfacePtr(), // 获取库接库的IDispatch指针
adOpenDynamic,
adLockOptimistic,
adCmdText);
DataRecord->AddNew();
DataRecord->PutCollect("MMSI", _variant_t(ais.m_MMSI));
DataRecord->PutCollect("Lon", _variant_t(ais.m_Longitude));
DataRecord->PutCollect("Lat", _variant_t(ais.m_Latitude));
DataRecord->PutCollect("SOG", _variant_t(ais.m_SOG));
DataRecord->PutCollect("COG", _variant_t(ais.m_COG));
DataRecord->PutCollect("ROT", _variant_t(ais.m_ROT));
DataRecord->PutCollect("Heading", _variant_t(ais.m_Heading));
DataRecord->PutCollect("UTC", _variant_t(ais.m_UTC_TIME));
DataRecord->Update();
DataRecord->raw_Close();
}
catch(_com_error& e)
{
dump_com_error(e);
}
}
在一个循环里面加了这么一段代码,想把收到的信息不断写入,但是只写入了几个。

之前在同样的位置加的
outfile.open("ais.txt",ios::app|ios::nocreate);
outfile<<"MMSI:"<<ais.m_MMSI<<" ";
outfile<<"船名:"<<ais.m_Name<<" ";
outfile<<"呼号:"<<ais.m_CallSign<<" ";
outfile<<"IMO号:"<<m_IMO<<" ";
outfile<<"经度:"<<ais.m_Longitude<<" ";
outfile<<"纬度:"<<ais.m_Latitude<<" ";
outfile<<"航速:"<<ais.m_SOG<<" ";
outfile<<"航向:"<<ais.m_COG<<" ";
outfile<<"转向率:"<<ais.m_ROT<<" ";
outfile<<"船艏向:"<<ais.m_Heading<<" ";
outfile<<"状态:"<<ais.m_Status<<" ";
outfile<<"船长:"<<ais.m_Length<<" ";
outfile<<"船宽:"<<ais.m_Width<<" ";
outfile<<"最大吃水:"<<ais.m_Draught<<" ";
outfile<<"目的港:"<<ais.m_Destination<<" ";
outfile<<"船旗国:"<<ais.m_Flag<<" ";
outfile<<"UTC时间:"<<ais.m_UTC_TIME<<" ";
outfile<<"精度:"<<ais.m_accuracy<<" "<<endl;
outfile.close();
存入TXT的是正常的,换成数据库代码就出问题了,但又不知道问题出在哪里。
------解决思路----------------------
不用 DataRecord ,直接 insert 也不行吗?
------解决思路----------------------
不太了解C++
我想#1楼的意思是,直接执行SQL INSERT,不用API的DataRecord