Update/Delete/Insert avec TPQConnection ne semble pas fonctionner
Bonjour,
Mon souci est que j'arrive à récupérer et à afficher les données depuis une base de données PostgreSQL mais pas à les modifier. Voici le code utilisé :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
|
procedure TMainForm.BtTestClick( Sender : TObject) ;
var
_SQLCon : TPQConnection;
_SQLTrs : TSQLTransaction;
_SQLQuery : TSQLQuery;
tampon : String;
begin
// Initialise la connection
_SQLCon := TPQConnection.Create(nil);
_SQLCon.DatabaseName := 'DB_MOSAIC';
_SQLCon.HostName := '192.168.0.12'; <----- Acces distant autorisé
_SQLCon.UserName := 'postgres';
_SQLCon.Password := 'motdepasse';
//Ouvre la connection
try
_SQLCon.Connected := True;
except
on e:EDatabaseError do begin
Erreur('Connection impossible.'+#13#10+e.Message);
_SQLCon.Free;
exit;
end;
end;
// Lier les objets
_SQLTrs := TSQLTransaction.Create(_SQLCon); <------ Cela est il permis?
_SQLTrs.DataBase := _SQLCon;
_SQLQuery := TSQLQuery.Create(_SQLCon); <------ Cela est il permis?
_SQLQuery.DataBase := _SQLCon;
_SQLQuery.Transaction := _SQLTrs;
// Injecte et execute la requete SQL
try
_SQLCon.ExecuteDirect('insert into bpartner(bprnum, bprnam) values(''SALIM'',''TEST Lazarus'');');
except
on e:EDatabaseError do begin
Erreur('Erreur reqête SQL.'+#13#10+e.Message);
_SQLCon.Free;
exit;
end;
end;
_SQLCon.Free;
end; |
Le code me semble bon car il fonctionne sur une BDD MySQL. Je dois sans doute avoir loupé quelque chose.
OS : Linux 3.2.0-4-686-pae #1 SMP Debian 3.2.54-2 i686 GNU/Linux
Lazarus : Version 1.2.0
PostgreSQL : Version 9.1.1.2
La structure de table a été simplifiée pour les besoins du test :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
|
-- Table: bpartner
-- DROP TABLE bpartner;
CREATE TABLE bpartner
(
bprnum character varying(10) NOT NULL,
bprnam character(35) NOT NULL,
CONSTRAINT pkd_bpartner PRIMARY KEY (bprnum )
)
WITH (
OIDS=FALSE
);
ALTER TABLE bpartner
OWNER TO postgres;
GRANT ALL ON TABLE bpartner TO postgres WITH GRANT OPTION; |
Je préfère utiliser PosqtgreSQL mais sinon je me rabattrais sur MySQL. Mais j'aimerais bien savoir ce qui se passe.
Merci à tous.
Salim