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é :
Le code me semble bon car il fonctionne sur une BDD MySQL. Je dois sans doute avoir loupé quelque chose.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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;
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 :
Je préfère utiliser PosqtgreSQL mais sinon je me rabattrais sur MySQL. Mais j'aimerais bien savoir ce qui se passe.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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;
Merci à tous.
Salim
Partager