标题:QSqlDatabase无法在开机自启动时加载数据
作者:wlq19911021
日期:2022-04-23 14:18
内容:
QSqlDatabase无法在开机自启动时加载数据;
环境:Win10 X64 + mingw64 + Qt5.12.0
数据库类型:SQLite3
目前手动启动是正常的,开机自启自动加载就没有数据(且没有任何报错);程序文件夹放在非系统目录,理应不涉及权限问题;有用过QSqlDatabase + SQLite开机自启加载的大哥麻烦帮个小忙,小弟先谢过了
#1 [liudianwu 04-24 08:36]
延时启动试试
#2 [spygg 04-24 17:56]
打印下日志呢? 如果你的是在注册表设置的开机启动会出好多问题,比如各种com加载可能会出问题
#3 [clickto 04-24 20:07]
没遇到过。我们开发工控软件,也是开机启动,也是使用的sqlite3,环境是mingw32,Qt5.11,没遇到过你所说的情况。
你可以在程序启动若干时间后再初始化数据库试试看?
#4 [圣域天子 04-25 10:54]
DB服务可能还没有启动好,如果你做的也是服务,需要加一个依赖
如果不是,我以前做法是半分钟连接一次,三分钟后还不行,才退出程序并报错
#5 回 圣域天子 的帖子 [spygg 04-25 21:45]
圣域天子:
DB服务可能还没有启动好,如果你做的也是服务,需要加一个依赖
如果不是,我以前做法是半分钟连接一次,三分钟后还不行,才退出程序并报错
用这种添加启动快捷方式的方法安全无痛.....
1.适应各种情况
2.不会被杀软拦截
/*!
* \brief runWithWindows
* \param autoRun
* \param exeName should be QCoreApplication::applicationFilePath()
* \param linkNamewhatever
*/
void runWithWindows(bool autoRun, QString exeName, QString linkName)
{
#ifdef Q_OS_WIN
QString startUpPath = QString("%1/%2")
.arg(QStandardPaths::writableLocation(QStandardPaths::ApplicationsLocation))
.arg("Startup");
QDir dir;
if(!dir.exists(startUpPath)){
startUpPath = QString("%1/%2")
.arg(QStandardPaths::writableLocation(QStandardPaths::ApplicationsLocation))
.arg("启动");
}
QString linkFull = QString("%1/%2.lnk")
.arg(startUpPath)
.arg(linkName);
if(autoRun){
//如果文件不一致,则创建
if(QFile::symLinkTarget(linkFull) != exeName){
&nb ..