下面将具体讲解,如何将数据库.db
文件,以及将数据库表中的数据作为 csv 的表进行导出。
注意
以上判断 U 盘存在的方法仅对文件适用。如果需要播放 U 盘中的视频文件,该 U 盘的判断方法不适用
通过内部方法检测是否插入了 U 盘
vector<string> v;
if(SysInfo::getHotPlugin()) {
v = SysInfo::getUdisksHot();
}
else {
v = SysInfo::getUdisks();
}
if (v.size() == 0){
pm->getMessageBox("未插入U盘!")->show();
return;
}
检查 U 盘路径是否存在来判断是否插入了 U 盘
string s_vendor = "/vendor";
vector<KV_Str_Str> res;
FileUtil::getPathContent(s_vendor, res);
if(res.size()==0) {
pm->getMessageBox("请插入U盘!")->show();
return;
}
获取路径
string path = s_vendor + "/" + res[0].k
如果是 default.db 位于屏内 /customer/prm/data 下
如果是采样、事件 位于屏内/customer/usr 下
需要引入 FileUtil 头文件 #include "util/FileUtil.h"
以上面方式一获取的 u 盘路径为案例
// v是u盘路径列表
// 这里也可以直接使用copyFile
//FileUtil::copyFile("/customer/prm/data/default.db", v[0]);
int ret = FileUtil::copyPath("/customer/usr", v[0]);
if (ret)
pm->getMessageBox("success")->show();
else
pm->getMessageBox("failed")->show();
采样导出时可以参考采样导出,无需进行 U 盘判断
SampleMgr::getInstance(p_rt)->exportCSV("",0,99999999,"sample");
直接使用导出方法,无需进行 U 盘判断
wMRecipeTable1->rcpExportAs(path);
将数据库中的 test 表以 csv 的形式导出到 U 盘
string upath = v[0] + "/test.csv"
string err = "1";//1表示成功
int ret = FileUtil::exportDB2CSV("/customer/prm/data/default.db","test",upath,err);
#if __arm__
// 在hmi中还需要刷新一下缓存
string re;
Util::exeSync("sync", "r", re);
#endif
if (ret)
pm->getMessageBox("success")->show();
else
pm->getMessageBox("failed")->show();