Insertion de données dans base de donnée à partir de servlet

Fridimette Messages postés 12 Date d'inscription mercredi 19 mars 2008 Statut Membre Dernière intervention 21 avril 2008 - 9 avril 2008 à 12:24
ryma_ini Messages postés 10 Date d'inscription lundi 2 avril 2007 Statut Membre Dernière intervention 9 juillet 2008 - 2 mai 2008 à 03:41
Bonjour,
J'ai un problème qui est vraiment en trés de me casser la tête : je ne comprend pas pourquoi mes données ne sont pas ajoutées à la base lorsque j'execute ma servlet !!
Voici le code qui est dans ma servlet :

Connexion com = new Connexion();
        
        try{
            
            //serveur,login,pwd,database
            com.loadDriverAndConnect("127.0.0.1","3306","root","root","");
            com.execute("INSERT INTO BIOTECH.RECAP (NEtude,NomCentre,idCentre,nomPreleveur,datePrelev) " +
                    "values ('"+nEtude+"','"+nomCentre+"','"+idCentre+"','"+nomPreleveur+"','"+ datePrelev + "');") ;
            com.close();
            }
        catch(Exception ex) {
            System.err.println("\n*** SQLException caught in main()");    
                            
        }
        getServletContext().getRequestDispatcher(urlReponse).forward(request,response);
        
        return;
    }


et maintenant le code de ma classe Connexion:
package germande;

import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.SQLWarning;
import java.sql.Statement;
import java.util.Vector;
import javax.swing.table.AbstractTableModel;

public class Connexion extends AbstractTableModel{
    
    private static final long serialVersionUID = 1L;
    private Statement statement;
    private ResultSet resultSet;
    private String[] columnNames = {};
    protected Vector<Vector<Object>> rows;// = new Vector<Vector<Object>>();
    private ResultSetMetaData metaData;
    
    Connection     conn;
    private String url;
    private String user;
    private String pwd;
    
    Connexion(){
        super();
        // String url = "jdbc:mysql://localhost:3306/";
    }
     
     /* Print stdout some informations about the database connection
     */
     private void printInfo(Connection c) throws Exception
     {
         // Get meta-data about the database
         DatabaseMetaData info = c.getMetaData();
        System.out.println("\nConnected to :\t" + info.getURL());
         //System.out.println("Driver :\t" + info.getDriverName());
        //System.out.println("Version :\t" + info.getDriverVersion());
     }

    /* Print stdout all pending SQLWarning warnings
     */
     private boolean checkForSQLWarnings(SQLWarning w) throws SQLException
     {
         boolean warning = false;
        if(w != null) {
            warning = true;
            System.out.println("\n**** Warning ****\n");

             while(w != null) {
            System.out.println("SQLState: " + w.getSQLState());
                 System.out.println("Message:  " + w.getMessage());
            System.out.println("Vendor:   " + w.getErrorCode());
                 System.out.println("");
                 w = w.getNextWarning();
             }
         }
        return warning;
     }

     /* Print stderr all pending SQLException exceptions
     */
     private void printSQLErrors(SQLException e)
     {
         while(e != null) {
            System.err.println("SQLState: " + e.getSQLState());
             System.err.println("Message:  " + e.getMessage());
             System.err.println("Vendor:   " + e.getErrorCode());
             System.err.println("");
            e = e.getNextException();
         }
     }

     protected void loadDriverAndConnect(String h,String q,String l,String p,String d) throws Exception
     {
        try {
             user=l;
             pwd=p;
             rows = new Vector<Vector<Object>>();
             
             Class.forName("com.mysql.jdbc.Driver").newInstance();
             // String url = "jdbc:mysql://localhost:3306/";
             url=("jdbc:mysql://"+h+":"+q+"/");
             
             conn = DriverManager.getConnection(url, user,pwd);
             statement = conn.createStatement(
                     ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE );
             
             // Print stdout warning messages if necessary
             checkForSQLWarnings(conn.getWarnings());

            // Print stdout info messages
             printInfo(conn);

         }
         catch(SQLException e) {
            System.err.println("\n*** SQLException caught in LoadDriver()");
            printSQLErrors(e);
             throw(SQLException) e;
         }
         catch(Exception e) {
            // This exception is caught if JDBC driver used cannot be loaded
            System.err.println("\n*** Exception caught in LoadDriver()"+e);
             throw(Exception) e;
         }
         
     }
     
     protected void affiche()throws Exception{
         try{
             for (int i =0 ; i< rows.size() ; i++){
                 System.out.println( "élément N°"+i+" : "+ rows.elementAt(i).elementAt(0));
             }
         }
         catch(Exception e){
             System.out.println(e+" erreur d'affichage");
         }
    } 
         
     
     /**
      *    Close the connection to the data base source
      */
     protected void close() throws Exception
     {
        try {
            resultSet.close();
            statement.close();
            conn.close();

            
            System.out.println("Deconnexion...");
             
         }
         catch(Exception e) {
            System.err.println("\n*** Exception caught in close()");
            throw e; 
             
         }
     }
    
     protected void useDataBase(String query){         if (conn null || statement null) {
             System.err.println("There is no database to execute the query.");
             return;
         }
         try {
             statement.execute(query);
             //fireTableChanged(null); // Tell the listeners a new table has arrived.
         }
         catch (SQLException ex) {
             System.err.println("erreur execQuery: "+ex);
         }
     }
             
     protected void recupResQuery(){
         
         try{
             
             metaData = resultSet.getMetaData();
             
             int numberOfColumns = metaData.getColumnCount();
             columnNames = new String[numberOfColumns];
             for(int column = 0; column < numberOfColumns; column++) {
                 columnNames[column] = metaData.getColumnLabel(column+1);
             }
             
             // Get all rows.
             //rows = new Vector<Vector<Object>>();
             /**
              * attention resultSet ne se lit qu'une seule fois apparemment si def comme tel.
              * ici nous remplissons un vecteur de vecteurs pour pouvoir
              * par la suite l'utiliser.
              * 
              */
             
             while (resultSet.next()) {
                 
                 Vector<Object> newRow = new Vector<Object>();
                 for (int i = 1; i <= getColumnCount(); i++) {
                     newRow.addElement(resultSet.getObject(i));
                 }
                 rows.addElement(newRow);
             }
             //Need to copy the metaData, bug in jdbc:odbc driver.
             fireTableChanged(null); // Tell the listeners a new table has arrived.
             
         }
         catch (SQLException ex) {
             System.err.println("erreur recupResQuery: "+ex);
         }
     }

     protected void execute(String query){         if (conn null || statement null) {
             System.err.println("There is no database to execute the query.");
             return;
         }
         try {
             statement.execute(query);
             //fireTableChanged(null); // Tell the listeners a new table has arrived.
         }
         catch (SQLException ex) {
             System.err.println("erreur execQuery: "+ex);
         }
     }
      

     
     protected void execQuery(String query) {         if (conn null || statement null) {
             System.err.println("There is no database to execute the query.");
             return;
         }
         try {
             resultSet = statement.executeQuery(query);         
         }
         catch (SQLException ex) {
             System.err.println("erreur execQuery: "+ex);
         }
     }
     
     
     protected void executeMyQuery(String query) {         if (conn null || statement null) {
             System.err.println("There is no database to execute the query.");
             return;
         }
         try {
             resultSet = statement.executeQuery(query);
            
             
             
             metaData = resultSet.getMetaData();
             
             int numberOfColumns = metaData.getColumnCount();
             columnNames = new String[numberOfColumns];
             for(int column = 0; column < numberOfColumns; column++) {
                 columnNames[column] = metaData.getColumnLabel(column+1);
             }
             
             // Get all rows.
             //rows = new Vector<Vector<Object>>();
             /**
              * attention resultSet ne se lit qu'une seule fois apparemment si def comme tel.
              * ici nous remplissons un vecteur de vecteurs pour pouvoir
              * par la suite l'utiliser.
              * 
              */
             
             while (resultSet.next()) {
                 
                 Vector<Object> newRow = new Vector<Object>();
                 for (int i = 1; i <= getColumnCount(); i++) {
                     newRow.addElement(resultSet.getObject(i));
                 }
                 rows.addElement(newRow);
             }
             //Need to copy the metaData, bug in jdbc:odbc driver.
             fireTableChanged(null); // Tell the listeners a new table has arrived.
             
         }
         catch (SQLException ex) {
             System.err.println("erreur execQuery: "+ex);
         }
     }

     public int getColumnCount() {
         return columnNames.length;
     }

         // Data methods

     public int getRowCount() {
         return rows.size();
     }

     public Object getValueAt(int aRow, int aColumn) {
         Vector<?> row = (Vector<?>)rows.elementAt(aRow);
         return row.elementAt(aColumn);
     }     
}


Cette classe marche bien car je l'ai deja testé dans une application java  mais lors de l'exécution de ma servlet ==> rien n'est ajouté.
S'il vous plait quelqu'un a une idée : c'est vraiment important pour moi !
Merci de votre aide !

1 réponse

ryma_ini Messages postés 10 Date d'inscription lundi 2 avril 2007 Statut Membre Dernière intervention 9 juillet 2008
2 mai 2008 à 03:41
Bonjour 
j'avais aussi ce problème , moi j'utilise tomcat comme seveur , et j'aurais du configurer le fichier " server.xml " en lui donnant le chemin de la base car c'est le serveur qui gère tes servlets , et dans mon application il fallait que je configure le fichier " web.xml "  (j'utilise eclipse)  . Reste a voir ce que tu utilises comme outils
voici un tutoriel  avec mysql et tomcat

Bon courage
0