sqlite3实现中文路径sql文件导入另类解决方法
2015-08-25 11:20
399 查看
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所在目录
相关文章推荐
- QT学习 第一章:基本对话框
- 使用Shiboken为C++和Qt库创建Python绑定
- 初识SQLITE3数据库
- 将 Ghost 从 SQLite3 数据库迁移到 MySQL 数据库
- SQLite3 命令行操作指南
- Qt定时器和随机数详解
- SQLITE3 使用总结
- SQLite3中自增主键相关知识总结
- Qt实现图片移动实例(图文教程)
- ubuntu下使用SQLite3的基本命令
- Qt for Android开发实例教程
- Android SQLite3多线程操作问题研究总结
- Python标准库之sqlite3使用实例
- Python SQLite3数据库操作类分享
- Python操作sqlite3快速、安全插入数据(防注入)的实例
- QModelIndex/Role/Model介紹<二>
- 基于PyQt5的快速开发框架QFramer
- ok6410开发板移植DirectFB手记
- 【笔记】给Qt内嵌一个Chrome吧
- 【算法】最短路径之A*搜索