Lazarus 2.2.0 (2022.01.05.)
Letöltés

  • Oldal:
  • 1

TÉMA:

SQLQuery update sql eredmény vizsgálat 2016 febr. 12 09:38 #1840

  • makgab
  • makgab profilkép Témaindító
  • Törzsgárda tag
  • Törzsgárda tag
  • Hozzászólások: 280
  • Köszönetek: 1
A try..finally rendben van persze. De kell nekem a visszaadott érték is. OK, rendben!

SQLQuery update sql eredmény vizsgálat 2016 febr. 12 09:03 #1839

  • Gábor
  • Gábor profilkép
  • Adminisztrátor
  • Adminisztrátor
  • Hozzászólások: 472
  • Köszönetek: 80
A hibakezelés helyes módja,hogy a kezelendő hibák lehetőségét rejtő műveleteket try..except kőzé zárod:
try
	SQLQuery1.Close;
	SQLQuery.SQL:='UPDATE table SET field=true WHERE id=:id';
	SQLQuery.ParamByName('id').AsInteger:=id;
	SQLQuery.Open;
	// további utasítások
except
	// hiba esetén EDatabaseError kivétel keletkezik (illetve egyéb hiba esetén más)
	on E: EDatabaseError do
	begin
		MessageDlg('Hiba','Hibaüzenet: ' + E.Message,mtError,[mbOK],0);
	end;
end;
Szükség esetén ezt egy try..finally közé lehet zárni.
A kivételkezelésről bővebben a dokumentációban olvashatsz: Exceptions
Hogyan kérdezzünk okosan? / Mit kell tennünk kérdezés előtt? -- Lazarus 2.3.0 -- FPC 3.3.1-- GNU/Linux 5.4.0 x86_64

SQLQuery update sql eredmény vizsgálat 2016 febr. 12 08:16 #1837

  • makgab
  • makgab profilkép Témaindító
  • Törzsgárda tag
  • Törzsgárda tag
  • Hozzászólások: 280
  • Köszönetek: 1
Üdv!
Egy SQLQuery-ben szeretnék egy "UPDATE .... SET ..." SQL parancsot futtatni és figyelni, hogy sikerült-e.
Erre mi a szép megoldás?

Az Open és az ExecSQL sem ad vissza eredményt a sikerességről (ha jól tudom).

Ez jó megoldás lehet? Csak egy boolean mezőt szeretnék true-ra állítani egyébként.
...
SQLQuery.SQL:='UPDATE table SET field=true WHERE id=:id RETURNING field;';
SQLQuery.ParamByName('id').AsInteger:=id;
SQLQuery.Open;
...
if ( SQLQuery.FieldByName('field').AsBoolean ) then
   // do something at success

  • Oldal:
  • 1