Ik ben bezig een servlet met een postgresql the laten communiceren. Hiervoor gebruik ik de jdbc connectionpool van de jdbc.postgresql.org pagina (pg73jdbc3.jar). Een SELECT query werkt gewoon goed, het probleem ontstaat op het moment dat ik data wil invoegen of wil updaten. De code welke ik op dit moment gebruik in mijn test servlet is:
Het vreemd is nu ik geen enkele error te voorschijn krijg en dat query idd het juiste aantal record wat update zou moeten zijn bevat (invoer via het psql programma werkt goed). Alleen in de database is niks geupdate. Hetzelde geld voor een insert query. int query toont netjes 1 maar er wordt niks ingevoerd.
Als database user gebruik ik momenteel de database superuser om te testen zodat rechten geen probleem moeten zijn. Ik heb het geprobreerd met enkele en dubbele haakjes escaped al dan niet op meerder plekken maar mijn ideeen raken inmiddels op. De code voor de test tabel welke ik gebruik is:
Misschien zit ik wel in het verkeerde forum en is er iets mis in de instellingen van de database. De enige veranderingen welke ik heb gedaan aan de standaard configuratie is in de config file pg_hba.conf tcp_sockets op true gezet. Mijn inziens zit het probleem ook niet in het maken van de connectie maar ergens anders maar waar
Misschien zit er ergens een fout in het gebruik van transacties omdat postgresql standaard van elke query een transactie maakt.
Hopelijk kan iemand mij verder op weg helpen, alvast bedankt...
Gebruikte software:
freebsd-current
tomcat 5.0.12
postgresql 7.3.4
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
| public class TestSQL extends HttpServlet {
Jdbc3PoolingDataSource source = new Jdbc3PoolingDataSource();
public void init() {
source.setDataSourceName("testSQL");
source.setServerName("localhost");
source.setDatabaseName("db-name");
source.setUser("db-user");
source.setPassword("db-pass");
source.setMaxConnections(10);
}
.....
Connection con = null;
try {
con = source.getConnection();
Statement stm = con.createStatement();
stm.setQueryTimeout(5);
int query = stm.executeUpdate("UPDATE test SET test='blaat' WHERE test='text'");
} catch (Exception e) {
out.println(e.printStackTrace());
} |
Het vreemd is nu ik geen enkele error te voorschijn krijg en dat query idd het juiste aantal record wat update zou moeten zijn bevat (invoer via het psql programma werkt goed). Alleen in de database is niks geupdate. Hetzelde geld voor een insert query. int query toont netjes 1 maar er wordt niks ingevoerd.
Als database user gebruik ik momenteel de database superuser om te testen zodat rechten geen probleem moeten zijn. Ik heb het geprobreerd met enkele en dubbele haakjes escaped al dan niet op meerder plekken maar mijn ideeen raken inmiddels op. De code voor de test tabel welke ik gebruik is:
code:
1
2
3
4
5
6
| CREATE TABLE public.test ( test text ) WITHOUT OIDS; GRANT ALL ON TABLE public.test TO public; GRANT ALL ON TABLE public.test TO pgsql; |
Misschien zit ik wel in het verkeerde forum en is er iets mis in de instellingen van de database. De enige veranderingen welke ik heb gedaan aan de standaard configuratie is in de config file pg_hba.conf tcp_sockets op true gezet. Mijn inziens zit het probleem ook niet in het maken van de connectie maar ergens anders maar waar
Hopelijk kan iemand mij verder op weg helpen, alvast bedankt...
Gebruikte software:
freebsd-current
tomcat 5.0.12
postgresql 7.3.4