最近公司接的机动车检测项目即将验收,审核数据需要通过平台协议,上传过去做备份展示用。
公司数据存储用的是SQL server,这个类文件自己用着很不错,分享给大家。自己在实际应用中也遇到很多问题,如果有应用问题的,可以一起讨论学习。
下面是程序里用到的一部分代码,有用的话可以借鉴。
一、先看下.h和.cpp文件的实现:(部分贴图)
// 连接数据库,查询最新黑烟信息
CAdoLx struAdo;
BOOL bRet = struAdo.Connect(struAdo.DBT_SQL, _T("车辆数据信息"), _T("ljk1*"), _T("sa"), _T("192.168.1.114"));
if (bRet)
{
m_strshow = _T("数据库连接成功... ");
}
else
{
m_strshow = _T("数据库连接失败... ");
return 0;
}
// 查询数据库车数据
bRet = struAdo.Select(_T("select * from 车辆数据信息.dbo.VE筛选结果 where XZ is NULL and 所属区域 = '湖北省天门市' ORDER BY 抓拍时间"));
int iCount = struAdo.GetRecordCount();
if (iCount)
{
m_strshow = _T("查询到最新车数据,准备上传... ");
for (int i = 0; i < iCount;)
{
CString jlbh, dwbh, ycxbh, jcsj, jcdwrzh, jcryxm, cdxh, ddjd, ddwd, cdpd, hphm, cpys, hpzl, rlzl;
CString tp1, tp2, tp3, tp4, sp1;
int lgmhd, lgmhdxz, kxd;
CString csTmp, csTmp1;
struAdo.GetFieldByIndex(4, csTmp); // 监测时间
csTmp1 = csTmp;
csTmp1.Replace(_T(" "), _T(""));
csTmp1.Replace(_T(":"), _T(""));
csTmp1.Replace(_T("-"), _T(""));
struAdo.GetFieldByIndex(1, dwbh); //hphm = ""; // DWBH var10 点位编号
jlbh.Format(_T("%s01%s000"), dwbh, csTmp1); // JLBH var26 10点位编号+2线+14时间
ycxbh = _T("01"); // YCXBH var2 遥测线编号
//__int64 i64tmp = getTimestamp(csTmp);
jcsj.Format(_T("%I64d00000000"), getTimestamp(csTmp)); // 监测时间 13位时间戳
jcdwrzh = csTmp1.Left(8); // JCDWRZH var8 监测点位日志号
struAdo.GetFieldByIndex(2, jcryxm); // 记录号
struAdo.GetFieldByIndex(3, cdxh); //cdxh = ""; // CDXH var6 车道序号
/* 部分字段未读取显示*/
CString csJsonIn;
csJsonIn.Format("%s",jcryxm); // 上传json串,根据协议自由拼接
bool bSucess = false;
CString cstrline;
bSucess = PostContent(_T("http://127.0.0.1:3400/API/interface/IBCar.aspx"), UTF8Convert(csJsonIn, CP_ACP, CP_UTF8), cstrline);
if (bSucess)
{
m_strshow = _T("上传成功 --- 记录编号:") + jlbh + _T(" 车牌号:") + hphm;
Sleep(50);
// 执行sql 更新XZ字段为 是
CString updatesqlline;
updatesqlline.Format(_T("update 车辆数据信息.dbo.VE筛选结果 set XZ = '是' where 记录号 = '%s'"), jcryxm);
int iret = struAdo.ExecSQL(updatesqlline);
Sleep(50);
}
else
{
m_strshow = _T("上传失败 --- 记录编号:") + jlbh + _T(" 车牌号:") + hphm;
Sleep(50);;
}
i++;
struAdo.MoveNext();
}
}
代码里还用到了时间戳和post上传实例代码,下一篇给大家贴出来需要的可以翻看。