Bonjour à toutes et à tous,
Je me débat avec un petit problème de driver JDBC sous PostgreSQL.
Je développe une petite application de tests des JSTL/JSP/EL sous tomcat et postgreSQL.
L'appli est formée par une table basique, un formulaire HTML de saisie et une JSP permettant d'enregistrer les données dans la table.
Description de la table :
En fait, tomcat me renvoie une erreur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 gihe=> \d ess Table "public.ess" Column | Type | Modifiers --------+------------------------+----------- id | integer | not null text | character varying(100) |
Apparement, le problème proviendrait d'un mauvais mapping des types de données JDBC.
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 javax.servlet.ServletException: javax.servlet.jsp.JspException: INSERT INTO ESS (ID,TEXT) VALUES (?,?) : ERROR: column "id" is of type integer but expression is of type character varying org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:844) org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:781) org.apache.jsp.record_jsp._jspService(org.apache.jsp.record_jsp:115) org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97) javax.servlet.http.HttpServlet.service(HttpServlet.java:802) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:322) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:291) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241) javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
J'ai essayé avec MySQL, tout fonctionne bien.
En intégrant les données directement dans la requête; ca fonctionne aussi.
En fait, postgreSQL fait un mauvais cast des données !
Si quelqu'un avait une idée, je suis preneur de toute piste, url, doc, ...
Merci d'avance.
Ensemble des codes pour info :
-------------------------------------
Le formulaire HTML :
La JSP :
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 <%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %> <html> <head> <title>Simple Example</title> </head> <body> <h1> Saisie de données </h1> <form name="saisie" action="record.jsp" method="get"> Code :<input type="text" name="code"/> Text :<input type="text" name="text"/> <input type="submit" name="submit"/> </form> </body> </html>
et le fichier web.xml:
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 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %> <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> <%@ page isELIgnored ="false" %> <html> <head> <title>Simple Example</title> </head> <body> <sql:update> INSERT INTO ESS (ID,TEXT) VALUES (?,?) <sql:param>${param.code} </sql:param> <sql:param>${param.text}</sql:param> </sql:update> </body> </html>
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 <?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"> <web-app> <description>Learning JSTL (or whatever you like</description> <context-param> <param-name>javax.servlet.jsp.jstl.sql.dataSource</param-name> <param-value>jdbc:postgresql://127.0.0.1/gihe,org.postgresql.Driver,gihe,Dlm2ppedGiHe</param-value> </context-param> </web-app>
Partager