Insertion de données dans base de donnée à partir de servlet
Fridimette
Messages postés12Date d'inscriptionmercredi 19 mars 2008StatutMembreDernière intervention21 avril 2008
-
9 avril 2008 à 12:24
ryma_ini
Messages postés10Date d'inscriptionlundi 2 avril 2007StatutMembreDerniè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 !
A voir également:
Insertion de données dans base de donnée à partir de servlet
ryma_ini
Messages postés10Date d'inscriptionlundi 2 avril 2007StatutMembreDerniè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