gpt4 book ai didi

linux - 不通过 QSqlQuery 获取所有 sqlite 编译指示的结果

转载 作者:太空宇宙 更新时间:2023-11-04 03:59:17 25 4
gpt4 key购买 nike

我想使用 Qt 的 QSqlQuery 获取 sqlite pragma 的当前状态。但我没有从程序中得到某些值的结果,而是从 sqlite 控制台中得到结果。Qt 版本 5.2.1、Sqlite 版本 3.8.4.3、Windows 7、Ubuntu 12.4 LTS

输出:
application_id =“0”
自动真空=“0”
自动索引=“1”
busy_timeout = "5000"
缓存大小=“2000”
cache_spill = [无结果]
case_sensitive_like = [无结果]

void MySqliteInfo::PrintState(QString state)
{
printf("%s = ", state.toStdString().c_str());
QSqlQuery query(*m_db);
query.prepare(QString("PRAGMA %1").arg(state));
query.exec();

if(0 == query.size()) {
printf("%s returns nothing\n", state.toStdString().c_str());
}
else {
if(query.next()) {
QVariant value = query.value(0);
if(value.canConvert(QMetaType::QString)) {
printf("\"%s\"\n", value.toString().toStdString().c_str());
}
else {
printf("[UnknownDataType]\n");
}
}
else {
printf("[NoResult]\n");
}
}
query.finish();
}

PrintState("application_id");
PrintState("auto_vacuum");
PrintState("automatic_index");
PrintState("busy_timeout");
PrintState("cache_size");
PrintState("cache_spill");
PrintState("case_sensitive_like");

最佳答案

您在 Qt 程序中实际使用的 SQLite 版本尚未实现 PRAGMA cache_spill

SQLite 只是忽略任何它无法识别的 PRAGMA。

documented , PRAGMA case_sensitive_like 不允许读取当前值。

关于linux - 不通过 QSqlQuery 获取所有 sqlite 编译指示的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23545955/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com