Pas de problème (pb), que du PowerBuilder (PB) ^^

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: 5121
Pépites: 97,197
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


N'envoyez jamais un humain faire le travail d'un programme.

Hors ligne

 

Pied de page des forums

Propulsé par FluxBB 1.2.22