Добрый день, я начинаю с мира Qt и базы данных Firebird. Завершаю процесс установки драйвера и выполняю операции по вставке, обновлению и консультации по базе данных.Когда я начал делать хранимые процедуры и запускать их из Qt не работал.Не подводит нас и всегда, что все сделано идеально, но база данных не запускается.Я программирую в Linux, используя Qt 2.0.1 и Firebird 2.1. Я создаю простой тест хранимой процедуры, который делает его вставкой в таблицу.Он работает при запуске консоли, но при попытке запуска из 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;
Следующий код будет использоваться для подключения к firebird из Qt
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
}
}
Большое спасибо за помощь.