FAQ JDBCConsultez toutes les FAQ

Nombre d'auteurs : 8, nombre de questions : 162, dernière mise à jour : 3 juin 2015  Ajouter une question

 

Cette FAQ a été réalisée à partir des questions fréquemment posées sur les forums de http://www.developpez.com et de l'expérience personnelle des auteurs.

Nous tenons à souligner que cette FAQ ne garantit en aucun cas que les informations qu'elle propose sont correctes. Les auteurs font leur maximum, mais l'erreur est humaine. Cette FAQ ne prétend pas non plus être complète. Si vous trouvez une erreur, ou que vous souhaitez nous aider en devenant rédacteur, lisez ceci.


SommaireLes RowSetLes WebRowSet (3)
précédent sommaire suivant
 

Les WebRowSet peuvent écrire leurs données, métadonnées et propriétés sous forme de fichiers XML. De même, ils peuvent se peupler à partir d'un tel fichier. Les méthodes employées sont naturellement susceptibles de lever des IOException, en plus des SQLException.

Écriture

Code java : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
WebRowSet rowset = new WebRowSetImpl(); 
//mise en place des propriétés et peuplement 
FileWriter writer = null; 
try{ 
   File destination = ... ;  
   writer = new FileWriter(destination); 
   rowset.writeXml(writer); 
}catch(IOException ioe){ 
   //etc. 
}catch(SQLException sqle){ 
   //etc. 
} 
finally{ 
   if(writer!=null){try{writer.close();}catch(Exception e){}} 
}
Lecture

Code java : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
WebRowSet rowset =new WebRowSetImpl(); 
FileReader reader = null; 
try{ 
   File source = ...;  
   rowset.readXml(source); 
}catch(IOException ioe){ 
   //etc. 
}catch(SQLException sqle){ 
   //etc. 
} 
finally{ 
   if(reader!=null){try{reader.close();}catch(Exception e){}} 
}
Naturellement, le fichier source doit être un fichier XML bien formé (cf. Comment sont formés les fichiers XML des WebRowSet ? ).

Mis à jour le 11 avril 2013 Ioan

Un des avantages de WebRowSet est le fait que l'on n'est pas limité à l'écriture ou à la lecture de fichiers. WebRowSet est capable d'écrire (ou de lire) sur n'importe quel type de flux. Cette capacité peut être particulièrement utile dans les applications web. Voici l'exemple d'une servlet :

Code java : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Class.forName("com.mysql.jdbc.Driver"); 
//récupération des paramètres de la requête 
String url = request.getParameter("url"); 
String username = request.getParameter("username"); 
String password = request.getParameter("password"); 
String command = request.getParameter("command"); 
  
//création et exécution du RowSet 
WebRowSet rowset = new WebRowSetImpl(); 
rowset.setUrl(url); 
rowset.setUsername(username); 
rowset.setPassword(password); 
rowset.setCommand(command); 
rowset.execute(); 
  
//écriture de la réponse 
response.setContentType("text/xml"); 
PrintWriter out = response.getWriter(); 
//rajout d'une éventuelle feuille de style 
out.println("<?xml:stylesheet type=\"text/xsl\" href=\"simple.xsl\"?>"); 
//écriture du rowset 
rowset.writeXml(out); 
  
out.close();
Le contenu du WebRowSet est directement écrit sur le flux de la réponse. Vous pouvez même ajouter en début de page un lien vers une feuille de style XSL pour mettre en forme les résultats.

Mis à jour le 11 avril 2013 Ioan

Les fichiers XML correspondant aux WebRowSet ont pour racine un nœud WebRowSet. Celui-ci contient trois types de nœuds, qui représentent respectivement les propriétés, les métadonnées et les données du WebRowSet.

Structure générale :

Code xml : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?xml version="1.0"?> 
<webRowSet xmlns="http://java.sun.com/xml/ns/jdbc"  
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://java.sun.com/xml/ns/jdbc http://java.sun.com/xml/ns/jdbc/webrowset.xsd"> 
   <properties> 
      <!-- Contient les propriétés du WebRowSet --> 
   </properties> 
   <metadata> 
      <!-- Contient les métadonnées du WebRowSet --> 
   </metadata> 
   <data> 
      <!-- Contient les données du WebRowSet --> 
   </data> 
</webRowSet>
Structure des propriétés :

Code xml : Sélectionner tout
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
<properties> 
   <command>SELECT * FROM TestWebRowSet</command> 
   <concurrency>1008</concurrency> 
   <datasource><null/></datasource> 
   <escape-processing>true</escape-processing> 
   <fetch-direction>1000</fetch-direction> 
   <fetch-size>0</fetch-size> 
   <isolation-level>2</isolation-level> 
   <key-columns></key-columns> 
   <map></map> 
   <max-field-size>0</max-field-size> 
   <max-rows>0</max-rows> 
   <query-timeout>0</query-timeout> 
   <read-only>true</read-only> 
   <rowset-type>ResultSet.TYPE_SCROLL_INSENSITIVE</rowset-type> 
   <show-deleted>false</show-deleted> 
   <table-name>TestWebRowSet</table-name> 
   <url>jdbc:mysql://localhost/JDBC</url> 
   <sync-provider> 
      <sync-provider-name>com.sun.rowset.providers.RIOptimisticProvider</sync-provider-name> 
      <sync-provider-vendor>Sun Microsystems Inc.</sync-provider-vendor> 
      <sync-provider-version>1.0</sync-provider-version> 
      <sync-provider-grade>2</sync-provider-grade> 
      <data-source-lock>1</data-source-lock> 
   </sync-provider> 
</properties>
Cette partie contient les propriétés du WebRowSet, mais aussi des informations sur le SyncProvider (celui de Sun dans l'exemple). On peut remarquer l'absence des propriétés username et password, qui naturellement doivent rester secrètes.

Structure des métadonnées :

Code xml : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
<metadata> 
   <column-count>4</column-count> 
   <column-definition> 
       <!-- Informations sur la première colonne --> 
   </column-definition> 
   <column-definition> 
       <!-- Informations sur la deuxième colonne --> 
   </column-definition> 
   <!-- etc. --> 
</metadata>
Les balises column-definition contiennent les informations relatives aux colonnes. Ces informations sont les mêmes que celles accessibles grâce aux métadonnées. Par exemple :

Code xml : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
   <column-index>2</column-index> 
   <auto-increment>false</auto-increment> 
   <case-sensitive>true</case-sensitive> 
   <currency>false</currency> 
   <nullable>1</nullable> 
   <signed>true</signed> 
   <searchable>true</searchable> 
   <column-display-size>7</column-display-size> 
   <column-label>unDecimal</column-label> 
   <column-name>unDecimal</column-name> 
   <schema-name></schema-name> 
   <column-precision>5</column-precision> 
   <column-scale>2</column-scale> 
   <table-name>TestWebRowSet</table-name> 
   <catalog-name></catalog-name> 
   <column-type>3</column-type> 
   <column-type-name>DECIMAL</column-type-name>
Structure des données :

Code xml : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
   <currentRow> 
      <columnValue>1</columnValue> 
      <columnValue>0.01</columnValue> 
      <columnValue>chaine 0</columnValue> 
      <columnValue>1088200800000</columnValue> 
   </currentRow> 
   <currentRow> 
      <!-- données de la deuxième ligne --> 
   </currentRow> 
   <!-- etc. pour chaque ligne du WebRowSet -->
La balise data peut contenir trois autres types de balises, dont le contenu est identique à currentRow. Celles-ci définissent les lignes ajoutées, modifiées ou supprimées.

Code xml : Sélectionner tout
1
2
3
4
5
6
<insertRow></insertRow> 
<modifyRow> 
   <columnValue>valeurInitiale</columnValue>    
   <updateValue>valeurModifiee</updatevalue> 
</modifyRow> 
<deleteRow></deleteRow>
Les trois types de balises peuvent contenir des balises updateValue, qui représentent les valeurs modifiées.

Mis à jour le 11 avril 2013 Ioan

Proposer une nouvelle réponse sur la FAQ

Ce n'est pas l'endroit pour poser des questions, allez plutôt sur le forum de la rubrique pour ça


Réponse à la question

Liens sous la question
précédent sommaire suivant
 

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2017 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

 
Responsables bénévoles de la rubrique Java : Mickael Baron - Robin56 -