我完全不知道在Qt的SQLite驱动程序中加载扩展。我已完成this 'how to'的所有步骤。刚刚将SQLITE_ENABLE_LOAD_EXTENSION更改为DSQLITE_ENABLE_LOAD_EXTENSION。
之后我尝试在我的应用程序中运行以下代码:
QSqlQuery tSqlQuery;
QString sql_command_text;
sql_command_text = QString("SELECT load_extension(\"libspatialite-4.dll\")");
if(!tSqlQuery.exec(sql_command_text))
qDebug() << tSqlQuery.lastError().text();
qDebug给了我这个:“未授权无法获取行”。
我正在使用Qt 4.6.3
我做错了什么?我读过很多文章,但找不到任何解决方案。
您可以确定以下事项:
答案 0 :(得分:0)
当我遇到这个问题时,我已经解决了这个问题: 添加 Src \ qtbase \ src \ 3rdparty \ sqlite \ sqlite3.c 下一行:
#ifndef SQLITE_ENABLE_LOAD_EXTENSION
# define SQLITE_ENABLE_LOAD_EXTENSION 1
#endif
在150行附近添加了它。
从DEFINES的 Src \ qtbase \ src \ 3rdparty \ sqlite.pri 文件中删除:
SQLITE_OMIT_EXTENSION
保持这样:
DEFINES += SQLITE_OMIT_COMPLETE SQLITE_ENABLE_FTS3 SQLITE_ENABLE_FTS3_PARENTHESIS SQLITE_ENABLE_RTREE
然后 cd 命令行(是的,我在 Win )到 Src \ qtbase \ src \ plugins \ sqldrivers \ sqlite 并执行下一个命令:
mingw32-make -j
mingw32-make install
标志 -j 使得make使用所有可用的内核进行编译,安装将结果dll复制到plugins \ sqldrivers \ sqlite目录(所有其他dll和#39的地方) ; s keep)qt安装。
在linux上(Ubuntu 14.10)我必须在编译之前在sqlite.pro中添加这一行:
LIBS=-ldl