Répétez apres moi :J'aime PBAdonf. J'aime PBAdonf. J'aime PBAdonf.

Le forum (ô combien francophone) des utilisateurs de Powerbuilder.

Recherche rapide

Annonce

Certaines rubriques, dont des cours, sont uniquement visibles par les membres du forum ^^.
Dans la rubrique Liens & Références, vous avez accès à un sommaire de téléchargement, profitez-en !
Il existe maintenant un nouveau TOPIC "Votre CV en Ligne" accessible uniquement par demande.

#1 24-02-2007 12:19:00

erasorz  
Admin
Lieu: Babylone
Date d'inscription: 23-11-2006
Messages: 5119
Pépites: 97,184
Banque: 2,147,483,647

[Tutorial PBWeb] JBoss#4. Configuration d'une connexion à la base

INDEX / PRECEDENT / SUIVANT



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 :

Code: jsp

<%@ 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 :

Code: sql

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

http://img135.imageshack.us/img135/3431/j41commandezr8.png


INDEX / PRECEDENT / SUIVANT


TESTER C'EST DOUTER.http://imageshack.com/a/img547/2035/ed4o.jpg
N'envoyez jamais un humain faire le travail d'un programme.

Hors ligne

 

Pied de page des forums

Propulsé par FluxBB 1.2.22