NSY102, Exercices dirigés associés aux transactions

 

1) Complétez l'architecture vue en cours

  1. En proposant un itérateur d'un "NotePadComposite", le test est fourni
  2. En développant la transaction et les tests unitaires associés

L'archive à télécharger ed_transaction.jar (puis ouvrir non_bluej ...., )

 

 

 

2) Mise en oeuvre d'une transaction avec la base de données

  1. Exécuter depuis une console "run_hsqldb.bat", présent dans le répertoire de l'E.D. /ed_transaction/
    • Notez que l'architecture retenue ici, comporte un serveur HTTP (port 818), pour les accès à la base
    • la configuration JDBC pour HSQLDB est la suivante :
        Class.forName("org.hsqldb.jdbcDriver");     // le driver jdbc
      
        Connection conn = DriverManager.getConnection(
               "jdbc:hsqldb:http://localhost:818/LA_BASE",  // url
               "sa",                                 // user
               "");                                  // password
  2. Exécuter le programme ci-dessous, celui-ci permet d'initialiser deux tables nommées CREDIT, DEBIT
    (voir la classe du même nom ...)
    import java.sql.*;
    
    public class TestJDBC{
    	
      
      public static void main(String[] args) throws Exception{
          Class.forName("org.hsqldb.jdbcDriver");     	// driver jdbc
    
          Connection conn = DriverManager.getConnection(
             "jdbc:hsqldb:http://localhost:818/LA_BASE",     // url
             "sa",                                 	        // user
             "");                                            // password
    
      
      Statement stmt = conn.createStatement();
       try{
     	 try{
    	   stmt.executeUpdate("DROP TABLE DEBIT;"); // au cas où
    	 }catch(SQLException e){}
    	 try{
    	   stmt.executeUpdate("DROP TABLE CREDIT;"); // au cas où
    	 }catch(SQLException e){}
        stmt.executeUpdate("CREATE TABLE DEBIT (NOM VARCHAR, MONTANT INTEGER);");          // creation
        stmt.executeUpdate("CREATE TABLE CREDIT (NOM VARCHAR, MONTANT INTEGER);");         
        stmt.executeUpdate("INSERT INTO CREDIT VALUES ('albert', 5000);");                 // initialisation
        stmt.executeUpdate("INSERT INTO CREDIT VALUES ('alfred', 10000);");
       
       // lecture de CREDIT
       ResultSet rs = stmt.executeQuery("SELECT * FROM CREDIT"); 
       ResultSetMetaData meta = rs.getMetaData();
       int columns = meta.getColumnCount();
    	 while (rs.next()) {
    	    for(int i=1;i<=columns;i++){
              System.out.print(rs.getString(meta.getColumnLabel(i)) + " | ");
          }
          System.out.println();
    	  } // while
    
       
      }finally{
        stmt.close();
        conn.close();
      }
    }