Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1471 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Requête Oracle avec Tomcat

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Requête Oracle avec Tomcat

n°916769
sire de Bo​tcor
Armorican way of life
Posté le 07-12-2004 à 11:03:02  profilanswer
 

Salut !
 
Je ne parviens pas à faire accepter une requête SQL pour Oracle avec Tomcat.
 
Voici mon code:

Citation :


<%@page import="java.net.URL"%>
<%@page import="java.sql.*"%>
 
<%
 Class.forName("oracle.jdbc.driver.OracleDriver" );
 Connection con = DriverManager.getConnection ("jdbc:oracle:thin:@gssclients:1521:ORACLE","system","admin" );
 out.println("OK, the connection to the db is working" );
 
 Statement smt = con.createStatement ();
 ResultSet rs = smt.executeQuery("SELECT * FROM bouh;" );  
 ResultSetMetaData rsMeta = rs.getMetaData();
 int noCols = rsMeta.getColumnCount();
 
 out.println("<html><head><title>Oracle - connexoracle.jsp</title></head><body>" );
 out.println("<table border><tr>" );
 for (int c=1; c<=noCols; c++) {
  String el = rsMeta.getColumnLabel(c);
  out.println("<th> " + el + " </th>" );
 }
 out.println("</tr>" );
 while (rs.next()) {
  out.println("<tr>" );
  for (int c=1; c<=noCols; c++) {
   String el = rs.getString(c);
   out.println("<td> " + el + " </td>" );
  }
  out.println("</tr>" );
 }
 out.println("</table>" );
 out.println("</body></html>" );
 
 rs.close();
 smt.close();
%>


 
Il me met une erreur au niveau de la ligne
ResultSet rs = smt.executeQuery();
alors que la requête est bonne car testée dans la concole Oracle.
 
Je ne pige pas...


---------------
«Ceux qui croient que les peuples suivront leurs intérêts et non leurs passions n’ont rien compris au XXe siècle.» © Raymond Aron
mood
Publicité
Posté le 07-12-2004 à 11:03:02  profilanswer
 

n°916789
Arjuna
Aircraft Ident.: F-MBSD
Posté le 07-12-2004 à 11:16:22  profilanswer
 

Je connais rien à Tomcat, et pour les problèmes de config Oracle, c'est sans moi.
 
Cependant, sans le message d'erreur, je vois pas comment une personne qui s'y connaît pourrait te venir en aide efficacement ;)

n°916798
sire de Bo​tcor
Armorican way of life
Posté le 07-12-2004 à 11:19:05  profilanswer
 

tu as raison
 

Citation :


Etat HTTP 500 -  
 
--------------------------------------------------------------------------------
 
type Rapport d'exception
 
message  
 
description Le serveur a rencontré une erreur interne () qui l'a empêché de satisfaire la requête.
 
exception  
 
javax.servlet.ServletException: ORA-00911: invalid character
 
 org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:825)
 org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:758)
 org.apache.jsp.connexoracle_jsp._jspService(connexoracle_jsp.java:85)
 org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
 javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
 org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
 org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
 org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
 javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
 
 
cause mère  
 
java.sql.SQLException: ORA-00911: invalid character
 
 oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:124)
 oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:304)
 oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:271)
 oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:622)
 oracle.jdbc.driver.T4CStatement.doOall8(T4CStatement.java:111)
 oracle.jdbc.driver.T4CStatement.execute_for_describe(T4CStatement.java:350)
 oracle.jdbc.driver.OracleStatement.execute_maybe_describe(OracleStatement.java:895)
 oracle.jdbc.driver.T4CStatement.execute_maybe_describe(T4CStatement.java:382)
 oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:985)
 oracle.jdbc.driver.OracleStatement.executeQuery(OracleStatement.java:1124)
 org.apache.jsp.connexoracle_jsp._jspService(connexoracle_jsp.java:53)
 org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
 javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
 org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
 org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
 org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
 javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
 
 
note La trace complète de la cause mère de cette erreur est disponible dans les fichiers journaux de Apache Tomcat/5.0.28.


---------------
«Ceux qui croient que les peuples suivront leurs intérêts et non leurs passions n’ont rien compris au XXe siècle.» © Raymond Aron
n°916804
Arjuna
Aircraft Ident.: F-MBSD
Posté le 07-12-2004 à 11:21:36  profilanswer
 

Bon, même sans rien comprendre, vire ton ";" dans le requête, je suis sûr qu'au pire, ton message d'erreur sera différent :D
 
Quand on utilise ODBC, JDBC ou OLEDB, les ";" en fin de requête sont interdits.

n°916817
sire de Bo​tcor
Armorican way of life
Posté le 07-12-2004 à 11:30:36  profilanswer
 

magnifique !
[:spikler]  
 
tu ne peux pas imaginer depuis combien de temps je suis sur cette page...
 
en fait, j'avais déjà essayer ça il y a qq temps
mais à ce moment j'avais d'autres erreurs
 
:jap: :jap:


---------------
«Ceux qui croient que les peuples suivront leurs intérêts et non leurs passions n’ont rien compris au XXe siècle.» © Raymond Aron
n°916821
Arjuna
Aircraft Ident.: F-MBSD
Posté le 07-12-2004 à 11:33:13  profilanswer
 

Moi aussi j'ai bien galéré avec ça :D
 
A noter que si tu as plusieurs requêtes à passer à la suite (deux insert par exemple) tu peux par contre mettre un ";" entre les deux requête (ou un simple espace quand il s'agit de SQL Server, mais ça vient de son parseur qui est un peu bizarre ;))

n°916824
Arjuna
Aircraft Ident.: F-MBSD
Posté le 07-12-2004 à 11:36:02  profilanswer
 

PS: Le coup des requêtes à la suite sur un même appel, c'est utile quand tu utilises une séquence par exemple :
 
"insert into matable (id, nom) values (seq.nextval, 'toto');select seq.currval from dual"
 
=> A ce moment, tu ouvre la requête comme un curseur, et tu récupère la valeur de l'id créé. Vu que les ponts de type ODBC, JDBC, OLEDB sont transactionnels, la valeur retournée est obligatoirement la valeur que tu as généré.
Tandis que si tu split ce code en deux appels depuis Java, tu ne peux pas garantir que le currval sera le même que ton nextval.

n°916827
sire de Bo​tcor
Armorican way of life
Posté le 07-12-2004 à 11:37:35  profilanswer
 

C'est un peu fort pour moi
mais je comprends que ça puisse être utile


---------------
«Ceux qui croient que les peuples suivront leurs intérêts et non leurs passions n’ont rien compris au XXe siècle.» © Raymond Aron
n°916831
Arjuna
Aircraft Ident.: F-MBSD
Posté le 07-12-2004 à 11:45:13  profilanswer
 

La bidouille que je t'ai indiqué pour la séquence, ça reste une bidouille hein ;) Dans tous les cas, il vaut mieu faire ça proprement. Concentre-toi là dessus ;)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Requête Oracle avec Tomcat

 

Sujets relatifs
Requête MySQL et création de Menuscomplémentaire de résultat d'une requète
Pb Dun Trigger en oracle[Oracle - PL/SQL] Problème de trigger et de table inaccessible
aidez une pauvre etudiante avec une requete bloquanteErreur Installation Oracle --> j'ai besoin d'aide!!
petite aide SQL requete imbriqué[Résolu] Exploiter 2 fois un résultat d'une requête
problème de syntaxe avec une requête SQLoracle/mysql et php comment acceder à une base (oracle ) à "distance"?
Plus de sujets relatifs à : Requête Oracle avec Tomcat


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR