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 :

CachedRowSet delete / insert


Sujet :

JDBC Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert Avatar de maxf1
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 229
    Par défaut CachedRowSet delete / insert
    Voilà je vous explique mon ch'ti probleme.

    J'utilise les CachedRowSet,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    CachedRowSetImpl rowSet = new CachedRowSetImpl();
    rowSet.setCommand("select * from message");
    rowSet.execute(con);
    Jusque la aucun probleme ca fonctionne j'affiche ma table dans un tableau c'est niquel.
    Je clique sur un bouton censé me deleter une ligne, et la bame:

    Voila le code que je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    rowSet.absolute(5);
    rowSet.deleteRow();
    rowSet.acceptChanges();
    Et voila l'erreur :

    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
    38
    39
    40
    41
    42
    43
    Value of params1 : {0} 888
    Value of params1 : {0} 2
    Value of params1 : {0} 6876876897
    Value of params1 : {0} 2
    Value of params1 : {0} 2007-02-13
    Value of params1 : {0} ghgnvfgg
    Value of params1 : {0} 2007-02-13
    javax.sql.rowset.spi.SyncProviderException: 12 conflicts while synchronizing 
    	at com.sun.rowset.internal.CachedRowSetWriter.writeData(CachedRowSetWriter.java:382)
    	at com.sun.rowset.CachedRowSetImpl.acceptChanges(CachedRowSetImpl.java:859)
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    	at java.lang.reflect.Method.invoke(Method.java:585)
    	at com.cc.framework.adapter.struts.ActionUtil.handleControlAction(Unknown Source)
    	at com.cc.framework.adapter.struts.FWAction.handleControlAction(Unknown Source)
    	at com.cc.framework.adapter.struts.ActionUtil.handleControlAction(Unknown Source)
    	at com.cc.framework.adapter.struts.FWAction.handleControlAction(Unknown Source)
    	at com.cc.framework.adapter.struts.ActionUtil.handleFormAction(Unknown Source)
    	at com.cc.framework.adapter.struts.FWAction.handleFormAction(Unknown Source)
    	at com.cc.framework.adapter.struts.ActionUtil.execute(Unknown Source)
    	at com.cc.framework.adapter.struts.FWAction.execute(Unknown Source)
    	at com.cc.framework.adapter.struts.FWAction.execute(Unknown Source)
    	at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:484)
    	at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274)
    	at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
    	at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:525)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
    	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
    	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
    	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
    	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
    	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
    	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
    	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
    	at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
    	at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
    	at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
    	at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
    	at java.lang.Thread.run(Thread.java:595)

    Pareil avec un bouton qui insert une row :

    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
    java.sql.SQLException: Failed on insert row
    	at com.sun.rowset.CachedRowSetImpl.insertRow(CachedRowSetImpl.java:5440)
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    	at java.lang.reflect.Method.invoke(Method.java:585)
    	at com.cc.framework.adapter.struts.ActionUtil.handleControlAction(Unknown Source)
    	at com.cc.framework.adapter.struts.FWAction.handleControlAction(Unknown Source)
    	at com.cc.framework.adapter.struts.ActionUtil.handleControlAction(Unknown Source)
    	at com.cc.framework.adapter.struts.FWAction.handleControlAction(Unknown Source)
    	at com.cc.framework.adapter.struts.ActionUtil.handleFormAction(Unknown Source)
    	at com.cc.framework.adapter.struts.FWAction.handleFormAction(Unknown Source)
    	at com.cc.framework.adapter.struts.ActionUtil.execute(Unknown Source)
    	at com.cc.framework.adapter.struts.FWAction.execute(Unknown Source)
    	at com.cc.framework.adapter.struts.FWAction.execute(Unknown Source)
    	at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:484)
    	at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274)
    	at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
    	at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:525)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
    	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
    	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
    	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
    	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
    	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
    	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
    	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
    	at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
    	at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
    	at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
    	at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
    	at java.lang.Thread.run(Thread.java:595)

    Donc si vous saviez pourquoi? Je n'ai pas essayer les updates pour le moment. Mais vu que ca plante à l'insert et delete j'ose meme pas imaginer l'update. J'espere que quelqu'un a deja rencontré ce meme probleme ou que quelqu'un connait le pourquoi du comment ca me serait bien utile.

    Edit : Petite precision je suis en JDK 1.5

  2. #2
    Membre émérite
    Avatar de sironimo
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    669
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mai 2004
    Messages : 669
    Par défaut
    Salut, je n'y connais pas grand chose mais regarde ce lien ICI comment ils font ça :

    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
     
    Inserting, updating, and deleting rows are supported by the row set feature as they are in the result set feature. The following code illustrates the insertion of a row at the fifth position of a row set:
     
    /**
     * Inserting a row in the 5th position of the rowset.
     */
    // moving the cursor to the 5th position in the rowset
    if (rowset.absolute(5))
    {
      rowset.moveToInsertRow ();
      rowset.updateInt (1, 193);
      rowset.updateString (2, "Ashok");
      rowset.updateInt (3, 7200);
     
      // inserting a row in the rowset
      rowset.insertRow ();
     
      // Synchronizing the data in RowSet with that in the
      // database.
      rowset.acceptChanges ();
    }
    j'espère que ça pourra t'aider

  3. #3
    Membre Expert Avatar de maxf1
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 229
    Par défaut
    Ouais merci en faite pour le insert j'ai vu que je faisais n'importe quoi. Mais ca n'empeche que j'ai toujours la meme erreur au delete.

    J'essaye en vain d'integrer le insert dans mon code mais n'y suis pas encore arrivé, car je gere un tableau qui est ou non editable en fonction de la row que l'on veut editer avec des boutons save, edit. Donc ca prend pas mal de temps.


    [Edit : J'ai reussi à faire mon insert correctement dans mon CachedRowSet. Malheureusement que j'essaye de le resynchronizer avec la base ca plante comme pour le delete.

    Pour info le 12 devant est le nombre de row en conflit. Ce qui veut dire que toute mes rows sont en conflits. Pourquoi alors que je n'ai rien fait. Une conversion, String/Object serait-elle à l'origine de tout ca?

    Merci]

  4. #4
    Membre émérite
    Avatar de sironimo
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    669
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mai 2004
    Messages : 669
    Par défaut
    Si toutes tes rows sont en conflit, c'est qu'il n'arrive pas à mettre à jour les rows et insérer en plein milieu.

    Tu as essayé d'ajouter une row à la fin pour voir si ça marche ?

    Sinon comme je te l'ai dit je n'y connais pas grand chose donc mon aide sera light

  5. #5
    Membre Expert Avatar de maxf1
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 229
    Par défaut
    En faite pour le moment je m'occupe pas de l'insert, et puis l'insert est fait à la fin à chaque fois.
    Meme un delete, je fais mon delete. Et quand je synchronize bamm toute les rows sont en conflit.

    En faite j'ai p'etre compris pourquoi. J'avais mis les primaryKey mais je viens de m'appercevoir qu'il n'arrivait pas à les récupérer donc peut-etre aucun moyen pour lui de reconnaitre les rows d'ou le plantage.

    Edit: Bon bé ca na pas l'air d'etre ca, j'ai mis les primaryKey en dur et toujours tous les conflits.

    Donc j'ai toujours mon CachedRowSet. Si j'appuie sur mon bouton save qui fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    rowSet.acceptChanges(con);
    Il n'y a pas d'erreur.

    Par contre si je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    rowSet.absolute(2);
    rowSet.deleteRow();
    rowSet.acceptChanges(con);
    J'ai le message d'erreur. Et je n'y comprend rien. Pourquoi y a-t-il autant de conflit que de row? Je doit positionner mon rowSet ailleur? Je dois me mettre au debut?

  6. #6
    Membre émérite
    Avatar de sironimo
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    669
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mai 2004
    Messages : 669
    Par défaut
    Pour la suppression essaie un positionnement en relative plutôt qu'en absolute.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    rowset.relative(5);
    rowset.deleteRow();
    Sinon, il y a la FAQ JDBC sur le sujet ICI même si je pense que tu as déjà dû la parcourir.

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

Discussions similaires

  1. Java/MySQL insert, delete, insert et update
    Par sniper_marra dans le forum JDBC
    Réponses: 2
    Dernier message: 21/08/2008, 23h44
  2. [SQL2005]Trigger On delete, insert, update(colonne)
    Par slim dans le forum MS SQL Server
    Réponses: 8
    Dernier message: 27/02/2007, 16h36
  3. [SQL] delete+insert ou plusieurs update c'est quoi le mieux?
    Par cassy dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 21/06/2006, 10h47
  4. voir les tables virtuel deleted inserted
    Par berceker united dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 19/06/2006, 14h31
  5. performance delete/insert vs update
    Par Dionisos dans le forum Langage SQL
    Réponses: 6
    Dernier message: 01/08/2005, 18h23

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