0

Qt の QSqlQuery を使用して sqlite プラグマの現在の状態を取得したいと考えています。しかし、プログラムからではなく、sqlite コンソールからいくつかの値の結果が得られません。Qt バージョン 5.2.1、Sqlite バージョン 3.8.4.3、Windows 7、Ubuntu 12.4 LTS

出力:
application_id = "0"
auto_vacuum = "0"
automatic_index = "1"
busy_timeout = "5000"
cache_size = "2000"
cache_spill = [NoResult]
case_sensitive_like = [NoResult]

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");
4

3 に答える 3

0

Qt プログラムで実際に使用している SQLite バージョンは、まだ実装されていませんPRAGMA cache_spill

SQLite は認識できない PRAGMA を無視します。

文書化されているようPRAGMA case_sensitive_likeに、現在の値を読み取ることはできません。

于 2014-05-09T11:06:47.720 に答える