sqlite3实现中文路径sql文件导入另类解决方法

sqlite3实现中文路径sql文件导入另类解决方法,第1张

概述1.需求 程序要实现产品离线数据下载,故采用java端直接拼接sql文件,客户端下载sql文件,合并到本地数据库。性能还行局域网十几秒7兆多,但是存在一个sqlite或sql文件保存在中文路径下无法合并的问题 2.解决 主要原因是因为sqlite打开数据库时使用utf8打开,qt普遍采用unicode编码。网上方法较多,这里采用另外一种方法解决,采用相对路径避开中文路径的问题 3.代码片段 1.创 1.需求 程序要实现产品离线数据下载,故采用java端直接拼接sql文件,客户端下载sql文件,合并到本地数据库。性能还行局域网十几秒7兆多,但是存在一个sqlite或sql文件保存在中文路径下无法合并的问题 2.解决 主要原因是因为sqlite打开数据库时使用utf8打开,qt普遍采用unicode编码。网上方法较多,这里采用另外一种方法解决,采用相对路径避开中文路径的问题 3.代码片段 1.创建数据库
QString strdbpath(QDir::currentPath() + "/db");    QDir dir("");    dir.mkpath(strdbpath);    strdbpath += "/MysqLite.db";    QsqlDatabase dbset = QsqlDatabase::addDatabase("QsqlITE","file");    dbset.setDatabasename(strdbpath);    if (!dbset.open()) {        LOG_ALL_ERROR(QStringliteral("Failed open MysqLite.db"));        return bret;    }
2.合并sql文件到本地数据库
std::string strstdcmd("sqlite3.exe ./db/MysqLite.db \".read ./db/MysqLite.sql\"");    QProcess process;    process.start(strstdcmd.c_str());    process.waitForFinished();    String strsqlpath(QDir::currentPath() + "/db/MysqLite.sql");    Qfile::remove(strsqlpath);
3.下载sql文件部分略用libcurl很容易也很快下载文件 4.备注 1.代码在win7+vs2010+qt5.40+libcurl 7.36.0下编译通过 2.编译或直接下载sqlite3.exe在生成目录和源码目录分别存放一份 3.常识currentPath在编译时是指源码目录,直接运行exe指exe所在目录 总结

以上是内存溢出为你收集整理的sqlite3实现中文路径sql文件导入另类解决方法全部内容,希望文章能够帮你解决sqlite3实现中文路径sql文件导入另类解决方法所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/sjk/1169793.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-02
下一篇 2022-06-02

发表评论

登录后才能评论

评论列表(0条)

保存