IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JDBC Java Discussion :

[Oracle] Problème d'insertion de ligne via JDBC


Sujet :

JDBC Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut [Oracle] Problème d'insertion de ligne via JDBC
    Bonjour,

    J'ai un petit problème en voulant insérer une ligne dans ma table via JDBC que je n'arrive pas à m'expliquer.

    J'ai le code suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public void test() {
    		try {
    			query = "INSERT INTO real_estates (id_real_estate, id_person, to_rent, to_sell, surface, price_for_buying, price_for_renting, available, " +
    					"nb_of_rooms, date_of_publication, date_of_availability) VALUES ((SELECT MAX(id_real_estate) + 1 FROM real_estates), " +
    					"(SELECT MAX(id_person) FROM owners), 0 ,1, '95', '150000', '0', 1, '4', '15-APR-2007', '02-JUN-2007')";
    			statement.executeUpdate(query);
    		}catch(SQLException e) { e.printStackTrace(); }
    	}
    qui lorsqu'il est exécuté me génère cette exception:
    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
    java.sql.SQLException: ORA-01858: Caractère non numérique trouvé à la place d'un caractère numérique
     
    	at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
    	at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:331)
    	at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:288)
    	at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:743)
    	at oracle.jdbc.driver.T4CStatement.doOall8(T4CStatement.java:207)
    	at oracle.jdbc.driver.T4CStatement.executeForRows(T4CStatement.java:946)
    	at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1168)
    	at oracle.jdbc.driver.OracleStatement.executeUpdateInternal(OracleStatement.java:1614)
    	at oracle.jdbc.driver.OracleStatement.executeUpdate(OracleStatement.java:1579)
    	at db.Houses.test(Houses.java:223)
    	at graphical.admins.AddRealEstate$10.actionPerformed(AddRealEstate.java:660)
    	at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
    	at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
    	at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
    	at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
    	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
    	at java.awt.Component.processMouseEvent(Unknown Source)
    	at javax.swing.JComponent.processMouseEvent(Unknown Source)
    	at java.awt.Component.processEvent(Unknown Source)
    	at java.awt.Container.processEvent(Unknown Source)
    	at java.awt.Component.dispatchEventImpl(Unknown Source)
    	at java.awt.Container.dispatchEventImpl(Unknown Source)
    	at java.awt.Component.dispatchEvent(Unknown Source)
    	at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
    	at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
    	at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
    	at java.awt.Container.dispatchEventImpl(Unknown Source)
    	at java.awt.Window.dispatchEventImpl(Unknown Source)
    	at java.awt.Component.dispatchEvent(Unknown Source)
    	at java.awt.EventQueue.dispatchEvent(Unknown Source)
    	at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown Source)
    	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    	at java.awt.EventDispatchThread.run(Unknown Source)
    Mais cette requête marche très bien lorsque je l'insère directement dans Oracle Express Edition 10. Que je mette les ' ' sur les nombres cela ne change rien.

    Voilà comment est construite la table qui nous intéresse:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    create table REAL_ESTATES  (
       ID_REAL_ESTATE       NUMBER(10)                      not null,
       ID_PERSON            NUMBER(10)                      not null,
       SURFACE              NUMBER(3)                       not null,
       NB_OF_ROOMS          NUMBER(2)                       not null,
       TO_RENT              SMALLINT,
       TO_SELL              SMALLINT,
       PRICE_FOR_RENTING    NUMBER(10),
       PRICE_FOR_BUYING     NUMBER(10),
       AVAILABLE            SMALLINT                        not null,
       DATE_OF_PUBLICATION  DATE                            not null,
       DATE_OF_AVAILABILITY DATE                            not null,
       constraint PK_REAL_ESTATES primary key (ID_REAL_ESTATE)
    );
    Je tourne en rond depuis un bon moment mais je ne vois pas d'où vient l'erreur.

    Si vous avez une idée n'hésitez pas

    Merci et bonne journée

  2. #2
    Membre à l'essai
    Inscrit en
    Mars 2007
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 7
    Par défaut
    Peut-être c'est le format de la date?

    Essai en utilisant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "INSERT INTO real_estates (id_real_estate, id_person, to_rent, to_sell, surface, price_for_buying, price_for_renting, available, " + "nb_of_rooms, date_of_publication, date_of_availability) VALUES ((SELECT MAX(id_real_estate) + 1 FROM real_estates), " + "(SELECT MAX(id_person) FROM owners), 0 ,1, '95', '150000', '0', 1, '4', '15-4-2007', '02-6-2007')";

  3. #3
    Invité
    Invité(e)
    Par défaut
    Merci c'est niquel c'était bien la date en effet mais je ne comprend pas pourquoi car quand je rentre la requête SQL directement sous Oracle c'est comme ça qu'il faut la rentrer. C'est JDBC qui la transforme automatiquement ou quoi ?

    Merci encore

  4. #4
    Membre à l'essai
    Inscrit en
    Mars 2007
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 7
    Par défaut
    Je pense que sqlplus place le format de date pour sa session.

    Vous pouvez aussi comme:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    alter session set NLS_DATE_FORMAT = 'yyyy-MM-dd'
    par exemple.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2003] VBA - Problème d'insertion de ligne avec copie de formules
    Par oracle7556 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 04/06/2010, 15h22
  2. Problème d'insertion de lignes dans une table MySql
    Par developppez dans le forum Windows Forms
    Réponses: 14
    Dernier message: 02/01/2009, 17h58
  3. Problème d'insertion de ligne
    Par bobie dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 02/08/2007, 13h25
  4. Problème de récupération de blob via JDBC
    Par realworld dans le forum Oracle
    Réponses: 2
    Dernier message: 24/01/2007, 10h27
  5. Oracle ne retourne que 10 lignes en JDBC
    Par kurkLord dans le forum JDBC
    Réponses: 1
    Dernier message: 14/04/2006, 22h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo