Qt 5.8.0 firebird QSqlQuery错误

时间:2017-05-07 11:05:53

标签: c++ sql qt firebird

连接到firebird后嵌入式不执行SQL请求。 在数据库中有一个名为test的表。

db = QSqlDatabase::addDatabase("QIBASE");
db.setDatabaseName("C:\data.fdb");
db.setUserName("SYSDBA");
db.setPassword("masterkey");

if (db.open()) {
   qDebug() << "success";
}
else {
   qDebug() << db.lastError();
}

QSqlQuery q("", db);
q.exec("show tables;");

qDebug() << q.lastError();
qDebug() << q.lastError().type();
qDebug() << q.lastQuery();

调试:

success
QSqlError("-104", "Could not prepare statement", "Dynamic SQL Error - SQL                         
error code = -104 - Token unknown - line 1, column 1 - show")
2
"show tables;"

1 个答案:

答案 0 :(得分:2)

show命令不是SQL的一部分,因此show tables;不是Firebird引擎识别的命令。各种show命令由一些外部工具实现,即isql

尝试使用ie select 1 from rdb$database作为“测试语句”(rdb$database是Firebird版本的Oracle dual表)。或者尝试从数据库中的test表中进行选择。