Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
Pages: 1
Discussion fermée
1) Drivers JDBC
Copier le(s) driver(s) JDBC de votre SGBDR dans C:\jboss-4.0.5.GA\server\default\lib\
Oracle :
[i]<ORA_HOME>[i]\jdbc\lib\classes12.zip
ASA :jconn2.jar, pbjdbc12105.jar
...
2) Datasource
Explorer le dossier C:\jboss-4.0.5.GA\docs\examples\jca\
et faire une copie du template correspondant au SGBDR dans dossier temporaire
Oracle :
oracle-ds.xml
ASA :sybase-ds.xml
...
Renommer le fichier temporaire en tutorial-ds.xml
(/!\ la terminaison -ds.xml
est obligatoire) et compléter les valeurs :
Oracle :
<jndi-name>ds_tutorial</jndi-name>
<connection-url>jdbc:oracle:thin:@HOST:1521:DATABASE</connection-url>
<driver-class>oracle.jdbc.driver.OracleDriver</driver-class>
<user-name>XXX</user-name>
<password>YYY</password>
ASA :
<jndi-name>ds_tutorial</jndi-name>
<connection-url>jdbc:sybase:Tds:HOST:5000/DATABASE?JCONNECT_VERSION=6</connection-url>
<driver-class>com.sybase.jdbc2.jdbc.SybDataSource</driver-class>
<user-name>XXX</user-name>
<password>YYY</password>
Déplacer le fichier tutorial-ds.xml
dans C:\jboss-4.0.5.GA\server\default\deploy\
Le message suivant apparaît dans la console :
10:52:26,406 INFO [WrapperDataSourceService] Bound ConnectionManager 'jboss.jca
:service=DataSourceBinding,name=ds_tutorial to JNDI name 'java:ds_tutorial
3) Test de la l'accès à la base
Enregistrer dans C:\jboss-4.0.5.GA\server\default\deploy\jbossweb-tomcat55.sar\ROOT.war\commande.jsp
le code suivant :
<%@ page language="java" buffer="8kb" autoFlush="true" isThreadSafe="true" isErrorPage="false" import="javax.naming.*,javax.sql.*,java.sql.*" %> <% // déclarations int li_cpt = 0 ; String ls_client, ls_commande, ls_sql, ls_nom, ls_html = "" ; java.util.Date ld_paiement ; float lf_montant, lf_total = 0 ; DataSource ljo_ds ; Connection ljo_conn ; Statement ljo_stmt ; ResultSet ljo_rs ; Context ljo_context = new InitialContext(); // récupération paramètre de page ?client= if (request.getParameter( "client" ) == null ) { ls_html += "Parametre N° de client obligatoire (commande.jsp?client=XXX) " ; } else { ls_client = request.getParameter( "client" ) ; // instanciation datasource, connexion, statement ljo_ds = ( DataSource )ljo_context.lookup( "java:ds_tutorial" ); ljo_conn = ljo_ds.getConnection() ; ljo_stmt = ljo_conn.createStatement(); // exécution requête SQL ls_sql = "SELECT colonne_no AS ID_COMMANDE, colonne_date AS DATE_PAIEMENT, colonne_montant AS MONTANT " + "FROM table_commande WHERE colonne_client ='" + ls_client + "'" ; ljo_rs = ljo_stmt.executeQuery( ls_sql ); // entête ls_html += "<table cellpadding=\"5\" rules=\"groups\" frame=\"box\">" + "<thead><tr><th colspan=\"4\">Commandes du client " + ls_client + "</th></tr></thead>" + "<thead><tr><th>#</th><th>ID</th><th>Paiement</th><th>Montant</th></tr></thead><tbody>" ; // boucle sur les lignes while( ljo_rs.next() ) { li_cpt ++ ; ls_commande = ljo_rs.getString( "ID_COMMANDE" ); ld_paiement = ljo_rs.getDate( "DATE_PAIEMENT" ); lf_montant = ljo_rs.getFloat( "MONTANT" ); lf_total += lf_montant ; ls_html += "<tr><td>" + li_cpt + "</td><td>" + ls_commande + "</td><td>" + ld_paiement + "</td><td align=\"right\">" + lf_montant + "</td></tr>" ; } // pied ls_html += "</tbody><tfoot><tr><th align=\"left\" colspan=\"3\">Total</th>" + "<th align=\"right\">" + lf_total + "</th> </tr></tfoot></table>" ; // fermeture connexion ljo_conn.close(); } %> <html> <head> <title>Tutorial JBoss+PBASP</title> </head> <body> <%=ls_html%> </body> </html>
Modifier la ligne 31 : adapter la requête à l'une de vos tables :
SELECT colonne_no AS ID_COMMANDE, colonne_date AS DATE_PAIEMENT, colonne_montant AS MONTANT FROM table_commande WHERE colonne_client =
avec :
colonne_no : champ chaine
colonne_date : champ date
colonne_montant : champ réel
colonne_client : champ chaine
Le "getter" de l'objet ResultSet
est spécifique au type de données SQL (getInt(), getString(), getDate(),...
)
Lancer : http://localhost:8080/commande.jsp?client=1204
Hors ligne
Discussion fermée
Pages: 1