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 :

Java, Oracle et Alter Session


Sujet :

JDBC Java

  1. #1
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2011
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2011
    Messages : 50
    Points : 52
    Points
    52
    Par défaut Java, Oracle et Alter Session
    Bonjour à tous,

    J'ai un petit soucis avec les alter session en Java... Je vous explique:

    Pour mon projet on ajoute des accents quelques fois dans la DB et je souhaiterais faire un alter session dans mon programme Java a chaque connexion afin de mettre la DB en langue Américaine pour éviter les soucis.. La Db est une DB Oracle...

    Voila mon bout de code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Connection c = // chaine de connexion
    Statement s = con.createStatement();
    s.execute("Alter Session set NLS_LANGUAGE = AMERICAN_AMERICA.WE8ISO8859P1");

    Il met une erreur au niveau du execute (), une idée d'ou ca peut venir ?

    l'erreur notée: null


    Un grand merci à tous !

  2. #2
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,

    Citation Envoyé par Evenae Voir le message
    l'erreur notée: null
    Surement un NullPointerException...


    Comme toujours lorsqu'on a une exception, il faut noter le stacktrace complet et indiquer les lignes correspondantes...


    a++

  3. #3
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2011
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2011
    Messages : 50
    Points : 52
    Points
    52
    Par défaut
    Le voici, désolée pour l'oubli.

    GRAVE: The log message is null.
    java.sql.SQLException: ORA-00922: missing or invalid option
    at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:124)
    at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:315)
    at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:281)
    at oracle.jdbc.driver.T4Call.receive(T4Call.java:638)
    at oracle.jdbc.driver.T4CStatement.doOall8(T4CStatement.java:112)
    at oracle.jdbc.driver.T4CStatement.execute_for_rows(T4CStatement.java:560)
    at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1085)
    at oracle.jdbc.driver.OracleStatement.execute(OracleStatement.java:1551)
    at DataBase.TypeDB.ajoutTypeAction(TypeDB.java:107)
    at Business.TypeManager.ajoutTypeAction(TypeManager.java:32)
    at Controller.ServAjoutTypeAction.processRequest(ServAjoutTypeAction.java:41)
    at Controller.ServAjoutTypeAction.doPost(ServAjoutTypeAction.java:90)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:754)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:847)
    at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1523)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:279)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:188)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:641)
    at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:97)
    at com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:85)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:185)
    at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:325)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:226)
    at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:165)
    at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:791)
    at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:693)
    at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:954)
    at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:170)
    at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:135)
    at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:102)
    at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:88)
    at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:76)
    at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:53)
    at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:57)
    at com.sun.grizzly.ContextTask.run(ContextTask.java:69)
    at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:330)
    at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:309)
    at java.lang.Thread.run(Thread.java:662)
    cela renvoi sur la ligne: s.execute("Alter Session set NLS_LANGUAGE = AMERICAN_AMERICA.WE8ISO8859P1");

  4. #4
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par adiGuba Voir le message
    et indiquer les lignes correspondantes...
    Citation Envoyé par Evenae Voir le message
    at DataBase.TypeDB.ajoutTypeAction(TypeDB.java:107)
    at Business.TypeManager.ajoutTypeAction(TypeManager.java:32)

    a++

  5. #5
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2011
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2011
    Messages : 50
    Points : 52
    Points
    52
    Par défaut
    c'est noté juste en dessous

  6. #6
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    Quel est le NLS_LANGUAGE utilisé au niveau de la base si tu ne fais pas cette modification. Car mélanger les charsets en base n'est pas une très très bonne idée, plutôt mauvaise dans l'ensemble...
    Sans compter le fait qu'Oracle et les conversion de charsets ne sont pas vraiment potes, mais alors pas du tout. En général on crée la base en se basant sur un charset, et on y touche plus.

  7. #7
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2011
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2011
    Messages : 50
    Points : 52
    Points
    52
    Par défaut
    A la base elle est en Français tout simplement, mais quand j'ajoute des accents ca va sans soucis mais quand je les sort j'ai le droit a des choses +/- incompréhensible. Ensuite, pour te donner exactement le code je ne sais pas comment le retrouver

    Exemple:

    Insert: "ajout d'une alerte traitée "

    Select: "ajout d'une alerte traitée "

    Et j'aimerai donc pallier a ce problème...

    Le soucis c'est qu'étant en entreprise je ne peux pas toucher de façon "définitive" à la base de données...

  8. #8
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Pour l'exception ce n'est pas un NPE mais plutôt une erreur SQL. Donc soit tu as une erreur de syntaxe soit il n'est pas possible de changer de charset comme cela (ce que je trouverais assez logique).


    Comment ouvres-tu ta connection JDBC ?
    Comment tu insères/récupères tes valeurs ?


    a++

  9. #9
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2011
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2011
    Messages : 50
    Points : 52
    Points
    52
    Par défaut
    L'insertion, suppression, modification, sélection de mes valeurs fonctionnent sans problèmes.

    ma string de connexion:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    class.forName("oracle.jdbc.driver.OracleDriver");
                        con=DriverManager.getConnection(
                        "jdbc:oracle:thin:@/*IP:base*/",
                        /*Nom Utilisateur*/,
                       /*Mot de passe*/);
    Toutes mes requêtes sont normalement faites avec des PreparedStatement, j'ai aussi testé avec pour le changement mais ça ne fonctionne pas non plus.

    Exemple :


    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
     
    String SQLInstruction = "select ale1_seq, ale_nom, ale_dateHeure, ale_description, typ_ale_nom, prio_nom, cli1_seq "
                                          + "from alerte, typeAlerte, priorite, alerteclient, client "
                                          + "where ale_prio1_seq = prio1_seq and ale_typ_ale1_seq = typ_ale1_seq and ale_cli_ale1_seq = ale1_seq "
                                          + "and ale_cli_cli1_seq = cli1_seq and ale_DateHeure > (sysdate - 1) "
                                          + "order by ale_dateHeure DESC";
     
                    PreparedStatement prepStat=con.prepareStatement(SQLInstruction);
     
                    ResultSet donnees = prepStat.executeQuery();
     
                     while (donnees.next())
                    {
                            Timestamp ts = donnees.getTimestamp(3);
     
                            java.util.Date dateHeure = new java.util.Date(ts.getTime());
                            DateFormat dateformat = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
     
     
     
                            a = new Alerte(donnees.getInt(1),
                                           donnees.getString(2),
                                           dateformat.format(dateHeure),
                                           donnees.getString(4),
                                           donnees.getString(5),
                                           donnees.getString(6),
                                           donnees.getString(7),
                                           donnees.getInt(8));
     
                            alerte.add(a);

    Avec bien sur gestion des Exceptions..


    Edit: Cela pourrait il être dû à un problème de droit pour l'utilisateur connecté?

  10. #10
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    Français ce n'est pas un characterset.

    De fait je soupçonne plutôt un problème de configuration du client.

    Peux tu nous donner le retour de la requête suivante (nécessite d'avoir un compte avec les droits DBA sous oracle):

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
      SELECT * FROM sys.props$ WHERE name LIKE 'NLS%CHARACTERSET%' or name like 'NLS%LANG%'

  11. #11
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2011
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2011
    Messages : 50
    Points : 52
    Points
    52
    Par défaut
    ORA-00942: table or view does not exist
    00942. 00000 - "table or view does not exist"
    *Cause:
    *Action:
    Erreur à la ligne 1, colonne 18

  12. #12
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    La vue en question n'est accessible qu'aux users ayant les droits DBA.

    La requête suivante devrait être exécutable par un user standard:

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from nls_database_parameters where parameter LIKE 'NLS%CHARACTERSET%' or parameter like 'NLS%LANG%' ORDER BY PARAMETER

  13. #13
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2011
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2011
    Messages : 50
    Points : 52
    Points
    52
    Par défaut
    Mon chef fait des test actuellement sur la db car il semblerait qu'il y a 2/3 trucs pas normaux...

    Je vous tiens au courant merci a tous

  14. #14
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    En tout cas l'alter de character set à la volée est quelque chose de dangereux et à éviter autant que possible (sous peine de foutre le merdier dans les dbf pour des histoire de taille de blocs)

  15. #15
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2011
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2011
    Messages : 50
    Points : 52
    Points
    52
    Par défaut
    Merci a tous, le problème est résolu...

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

Discussions similaires

  1. [Vxi3] - Jouer des alters session oracle
    Par dude666 dans le forum Designer
    Réponses: 3
    Dernier message: 14/09/2015, 17h46
  2. [ORACLE 9i] Trace session
    Par sygale dans le forum Administration
    Réponses: 3
    Dernier message: 20/03/2008, 07h10
  3. Alter Session : question de TimeOut
    Par Filippo dans le forum Administration
    Réponses: 4
    Dernier message: 13/05/2004, 17h42
  4. [java][Oracle]Ouvrir un fichier(blob) avec le browser
    Par marsup54 dans le forum Servlets/JSP
    Réponses: 8
    Dernier message: 11/09/2003, 13h35

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