gpt4 book ai didi

plsql - 在 Firebird 中使用 Qt 存储过程

转载 作者:行者123 更新时间:2023-12-01 09:35:27 26 4
gpt4 key购买 nike

下午好,
我开始在 Qt 和 Firebird 数据库的世界中。完成驱动程序安装过程并执行数据库插入、更新和咨询的操作。
当我开始制作存储过程并从 Qt 运行它们时不起作用。不会失败,我们总是认为一切都变得完美,但数据库没有运行。
我正在使用 Qt 2.0.1 和 Firebird 2.1 在 Linux 中编程
我创建了一个简单的存储过程测试,将其插入到表中。它通过运行控制台工作,但是当尝试从Qt运行时不起作用并且没有给我任何错误。SQL代码是:

SET TERM ^ ;CREATE PROCEDURE AGREEGAR_UNO AS BEGIN insert into JUEGO(CODIGO,ESCRUTINIO,ESTADO,FECHA,HORAINICIO) values (next value for GNECODIGOJUEGO,'111,123,154,169,178','Hi', current_date, current_time);END^SET TERM ; ^
GRANT EXECUTE ON PROCEDURE AGREEGAR_UNO TO SYSDBA;

以下代码将用于从 Qt 连接到 firebird
bool VentanaPrueba::conectar()
{
this->db= QSqlDatabase::addDatabase("QIBASE","Data");
this->db.setDatabaseName("./BD/Data.fdb");
this->db.setPassword("password");
this->db.setUserName("SYSDBA");
if(!db.open())
{
return false;
}
else
return true;
}

这是负责调用过程的代码
void VentanaPrueba::procedimiento()
{
if (!this->db.isOpen()) this->conectar();
if(this->db.isOpen())
{ QSqlQuery procedimiento = QSqlQuery::QSqlQuery(this->db);
bool bandera = procedimiento.prepare("EXECUTE PROCEDURE AGREEGAR_UNO");
QString err = procedimiento.lastError().text();
bool respuesta= procedimiento.exec();
//this->db.commit();
if(!respuesta)
{
this->db.close();
}else
{
procedimiento.finish();
this->db.commit();
this->db.close();
}


}else{
//error
}


}

非常感谢您的帮助。

最佳答案

IBPP 或 InterBase Plus Plus 是一个客户端接口(interface)项目,用于连接 Qt 与 Firebird 等 Interbase 数据库系统。使用它,您可以轻松地使用您的 firebird 数据库。从 http://sourceforge.net/projects/ibpp/files/ 下载其源代码包或者ibpp官网,解压。将核心文件夹复制到您的项目文件夹中。并将这些文件添加到您的 Qt 项目中。
阅读完整指南
https://rongsheng007.wordpress.com/2010/08/23/make-qt-applications-work-with-firebird-database/

关于plsql - 在 Firebird 中使用 Qt 存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6299808/

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