postgresql hibakódok Qt-ben

Sziasztok!

Qt-ben kezdtem el írni egy hálózat menedzsment programot (V2),
és a Qt és PostgreSql viszonylatában ütköztem egy problémába. Hiba esetén ugye a QSqlError objektumból tudhatjuk meg a hiba paramétereit. Itt a szöveges hibaüzenetekből szépen kiderül, hogy mi a hibát kiváltó ok. A programból is kényelmesen kezelhető numerikus hiba kódot viszont nem adja vissza a QSqlError osztály. A number() metódus mindig -1 -et ad vissza.
Ha valaki használ Qt-t és PostgreSql-t (egyszerre) árulja már el, miből találja ki, hogy mi volt a hiba, ha nem sikerül egy adatbázis művelet?

Hozzászólások

Szia,

Talán segít, nekem VS2010 alatt debuggolva a következő sor a MySQL serverrel nem létező host ("unknown MySQL server host...") esetén 2005-ös hibakódot adott vissza. Ugyan ez a kód PostgreSQL esetén nálam is -1 értékkel tér vissza.


	//conDB --> PSqlDatabase*
	this->conDB->setHostName(host);
	this->conDB->setPort(port);
	this->conDB->setDatabaseName(dbname);
	this->conDB->setUserName(username);
	this->conDB->setPassword(password);
	bool bResult = this->conDB->open();
	if (!bResult)
	{
		error = this->conDB->lastError().text();
		int iError = this->conDB->lastError().number();
		delete this->conDB;
		this->conDB = 0;
	}

Ez PSQL plugin hiba...

Itt egy PATCH a hibára. Én 4.7.1-et használok, most jött ki a 4.7.2, de szerintem még mindig nem javították!!!!

Szerk.: Így nézegetve a PATCH-et, szerencsére csak a setNumber hiányzik :-(. A szöveges üzenet azért jó ==>> megmondja mi volt a hiba! Logolni is jó (persze szebb lenne hibakóddal), a felhasználó felé is inkább a szöveges üzenetet mutatom. Azt egy jó struktúra segít eldönteni futás közben a programban, hogy kapcsolódni nem tudunk vagy az SQL hibázik.

Attila, Perger
-----------------------------------------------------
"Az a szoftver, amelyiket nem fejlesztik, az halott!"

A postgresql doksijában azt írják (ha jól értem), hogy ők az SQL szabványt követik a hibaüzeneteknél. Ha ez igaz, akkor a Qt-nek vagy ha a szabvány rossz, akkor az SQL szabvány készítőinek kéne szégyellnie magát.
Mindenesetre nekem elég radikális nézeteim vannak a programhibák kezelése terén: Minden olyan programozót, aki elnagyolja, vagy ne agy isten elfelejti a korrekt hibakezelést, az udvariasan, de határozottan egy baseball ütővel kell eltanácsolni a billentyűzet közeléből. (Kivéve a hobbi projekteket, ott az ő baja.)

A lastError.type() enyhén szólva durva felosztása a hibáknak. Egy duplikált kulcs miatt meghiúsult insert-nél például "SQL statement syntax error."-t kapok, ami nem sokat segít, és még csak nem is igaz.
Nagyon gáznak tartom. hogy erre, a hiba riportokban évekkel ezelőtt megjelent problémára nem tudják elvégezni a javítást, úgy, hogy az igazándiból már létezik, csak hát leszarják. A pach-elés pedig jelentősen megnehezíti egy program telepítését, legalábbis nekem fogalmam sincs hogyan magyarázom el a csomagkezelőnek, hogy ezt a csomagot ne bántsa, ne akarja telepíteni. Van rá esély, hogy a Qt-t nem csak az én programom használja.

Amennyire én tudom, kb ez van, a különféle SQL driverek ennyire vannak megírva, a MySQL driverből is hiányzik egy halom dolog implementációja. A sima errortext ami még általában használható.
Más dolgok foglalták le a fejlesztők figyelmét, főként, mikor a nokiának nyomni kellett a sok okosságot...