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

  FORUM HardWare.fr
  Programmation
  Java

  [JDBC] deleteRow()

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[JDBC] deleteRow()

n°940388
tomsawyer1​21
Posté le 07-01-2005 à 16:04:43  profilanswer
 

Je voudrais supprimer une ligne dans la table d'une BD.
Cette table est représentée dans une jTable.
Je selectionne la ligne.
Avec un resultSet.absolute(numLigne) je me place au bon endroit.
resultSet.deleteRow() qui supprime la ligne courante.
 
Seulement, erreur a l'execution, il me dit que l'ensemble resultat est en read-only.  Pourtant, connection jdbc n'est pas en read only. et le resultset non plus, du moins je pense !
 
 

Code :
  1. try {
  2.             connect.setReadOnly(false);
  3.             Statement statement = null;           
  4.             statement = connect.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
  5.             ResultSet results = statement.executeQuery(cmd);                       
  6.             results.absolute(numRow);
  7.             results.deleteRow();         
  8.         }
  9.          catch (Exception e) {
  10.             e.printStackTrace();
  11.         }

mood
Publicité
Posté le 07-01-2005 à 16:04:43  profilanswer
 

n°940394
glod 2
Votre trajet, notre projet.
Posté le 07-01-2005 à 16:13:16  profilanswer
 

Quelle base et quels drivers ? Certain ne supportent pas les resultset updatable.

n°940404
tomsawyer1​21
Posté le 07-01-2005 à 16:18:50  profilanswer
 

base: oracle 9i
drivers: ojdbc14.jar, JDBC 3.0
 
j'ai plutot vu que les resultset updatable sont relatif a la version du JDBC, a partir de la 2.0, donc j'ai la 3.0 ... donc normalement ...
 
l'erreur, a l'execution:
 
java.sql.SQLException: OpÚration non valide sur un ensemble de rÚsultats de type read-only : deleteRow


Message édité par tomsawyer121 le 07-01-2005 à 16:19:13
n°940417
glod 2
Votre trajet, notre projet.
Posté le 07-01-2005 à 16:24:30  profilanswer
 

oui :)
Mais y a certaines versions de drivers qui n'implantent pas toutes les nouveautés, et les ResultSet updatables en font souvent partie. Enfin les drivers Oracle doivent tout supporter je pense.
Tu es sûr de ton numRow ?

n°940427
tomsawyer1​21
Posté le 07-01-2005 à 16:29:14  profilanswer
 

Code :
  1. public void deleteResults(String cmd, int numRow) throws java.rmi.RemoteException {
  2.         try {
  3.             connect.setReadOnly(false);
  4.             Statement statement = null;           
  5.             statement = connect.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
  6.             ResultSet results = statement.executeQuery(cmd);                       
  7.             results.absolute(numRow);
  8.             results.deleteRow();         
  9.         }
  10.          catch (Exception e) {
  11.             e.printStackTrace();
  12.         }
  13.     }


 
 
oui je suis sur ... mais meme, l'erreur de vient pas de la ...
c'est vraiment embetant

n°940515
tomsawyer1​21
Posté le 07-01-2005 à 17:35:45  profilanswer
 

Personne ? lol
sinon on pourrait créer soi-même la requete "delete from ma_table where ca_et_ca = cela and ..."
Mais bon ... c'est un traitement tres lourd car il faudrait connaitre le type de chaque variable...

n°940552
glod 2
Votre trajet, notre projet.
Posté le 07-01-2005 à 18:28:05  profilanswer
 

Mais jcomprends pas vraiment comment ça marche là :??
Comment le numRow peut il être différent de 1 ?

n°940704
rifflet
Posté le 07-01-2005 à 21:30:03  profilanswer
 

Glod 2 a écrit :

Mais jcomprends pas vraiment comment ça marche là :??
Comment le numRow peut il être différent de 1 ?


 
parce que numRow= le num de ligne courante dans ma jTable,
je travaille avec RMI et JDBC, acces a une base de donnée a distance donc.
quand je click sur le bouton delete, (j'ai donc selectionner une ligne dans ma jTable qui correspond a un "select * from matable" auparavant) il connai le num de ligne ! que je passe a ma méthode deleteResult qui se trouve sur le serveur, enfin ca c'est du detail !

n°949918
tomsawyer1​21
Posté le 10-01-2005 à 12:54:17  profilanswer
 

Ce qui colle pas dans le code c'est que la commande cmd est "SELECT * FROM EMP" par exemple si on met "SELECT Empno,Ename from emp" alors on peut faire le deleteRow()!!
 
 Etrange : donc en fait si on fait un "select all"  
 
--> le ResultSet passe en read-only qqu'un c pourquoi et comment contourner la chose ?
 
Merci


Message édité par tomsawyer121 le 10-01-2005 à 13:46:56

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  [JDBC] deleteRow()

 

Sujets relatifs
[JDBC][SQL3][Oracle] récupérer un objet de la base[JDBC] Mon programme trouve pas les drivers
lister des sequences de BDD postgres via JDBCJDBC, SQL Serveur et Unicode
[odbc jdbc] lecture base dBase (.dbf)[JDBC] Erreur de connexion MySQL ou de config ?
[JDBC + Access + Applet] AccessControlExceptionDriver jdbc pour mysql
JDBC PostGreSQL, insertions de PL/PGSQL trigger et fonction marche pas[JBuilder] Executable natif - erreur JDBC
Plus de sujets relatifs à : [JDBC] deleteRow()


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)