QSQLITE:未授权无法获取行

时间:2013-11-30 22:02:33

标签: sql qt sqlite

我完全不知道在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

我做错了什么?我读过很多文章,但找不到任何解决方案。

您可以确定以下事项:

  1. 我已经完成了操作方法的所有步骤
  2. 我重建了DLL并替换了它们

1 个答案:

答案 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