Problème JAVA

Résolu/Fermé
midou4u Messages postés 42 Date d'inscription lundi 8 décembre 2008 Statut Membre Dernière intervention 3 mars 2011 - 24 févr. 2010 à 04:34
xav3601 Messages postés 3289 Date d'inscription lundi 10 novembre 2008 Statut Membre Dernière intervention 2 mars 2016 - 24 févr. 2010 à 14:56
Bonjour,

Je viens de commencer l'apprentissage de JAVA, et j'ai un problème que je n'arrive pas à détecter la cause !
Mon programme se compose de trois classes : Etudiant, MaConnexion et Main comme suit :


****************************La classe Etudiant **********************************

package cas2;

import java.beans.Statement;
import java.sql.*;





class Etudiant{

MaConnexion con=new MaConnexion();
int code;
String nom;
String prenom;
public Etudiant(int code,String nom,String prenom){
this.code=code;
this.nom=nom;
this.prenom=prenom;
}

public void Insert(){

con.open();
con.St();
int NbLns=S.executeUpdate("insert into infoetudiant value ("+this.code+",'"+this.nom+"',"+this.prenom+"')");
System.out.println(NbLns+" Ligne(s) insérée(s)");
con.Close();

}


}

************************* La classe MaConnexion ************************************

package cas2;

import java.sql.*;
import java.sql.DriverManager;
import java.sql.SQLException;



public class MaConnexion {


Connection con=null;
Statement S=null;

public Connection open() throws ClassNotFoundException, SQLException{

String url = "jdbc:odbc:bdetudiant";
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
con=DriverManager.getConnection(url,"","");
return con;
}

public void St() throws SQLException
{
S=con.createStatement();
}


public void Close() throws SQLException{
con.close();

}
}

****************************** La classe Main ***********************************

package cas2;

public class Main {


public static void main(String arg[])
{

Etudiant ahmed=new Etudiant(1994,"ali","karim");
ahmed.Insert();


}

}

****************************************************************************
****************************************************************************

Je vous prie de bien vouloir m'aider à identifier l'erreur que j'ai commise, et de me proposer une solution.

Merci les amis !
A voir également:

10 réponses

Artamos Messages postés 165 Date d'inscription vendredi 5 février 2010 Statut Membre Dernière intervention 28 mars 2011 16
24 févr. 2010 à 04:40
int NbLns=S.executeUpdate("...


la variable S n'est pas definis dans ta classe etudiant.

Aussi, pense a bien definir les visibilites de tes variables globales (private).


sinon, quel est/sont le(s) message(s) d'erreur(s) quand tu compile?
0
midou4u Messages postés 42 Date d'inscription lundi 8 décembre 2008 Statut Membre Dernière intervention 3 mars 2011 3
24 févr. 2010 à 12:01
S'il vous plait j'ai besoin d'une suggestion de réponse !
Veuillez corriger mon programme.
Merci les amis.
0
midou4u Messages postés 42 Date d'inscription lundi 8 décembre 2008 Statut Membre Dernière intervention 3 mars 2011 3
24 févr. 2010 à 13:03
Après la compilation, j'ai le message suivant sur console :

Exception in thread "main" java.lang.Error: Unresolved compilation problem:
S cannot be resolved

at cas2.Etudiant.Insert(Etudiant.java:26)
at cas2.Main.main(Main.java:10)
0
xav3601 Messages postés 3289 Date d'inscription lundi 10 novembre 2008 Statut Membre Dernière intervention 2 mars 2016 311
24 févr. 2010 à 13:40
Comme dit plus haut ton objet S n'est pas défini!
il faudrait que tu fasses quelque chose de cette sorte:


****************************La classe Etudiant **********************************

package cas2;

import java.beans.Statement;
import java.sql.*;





class Etudiant{

MaConnexion con=new MaConnexion();
int code;
String nom;
String prenom;
public Etudiant(int code,String nom,String prenom){
this.code=code;
this.nom=nom;
this.prenom=prenom;
}

public void Insert(){

con.open();
S = con.St();
int NbLns=S.executeUpdate("insert into infoetudiant value ("+this.code+",'"+this.nom+"',"+this.prenom+"')");
System.out.println(NbLns+" Ligne(s) insérée(s)");
con.Close();

}


}

************************* La classe MaConnexion ************************************

package cas2;

import java.sql.*;
import java.sql.DriverManager;
import java.sql.SQLException;



public class MaConnexion {


Connection con=null;
Statement S=null;

public Connection open() throws ClassNotFoundException, SQLException{

String url = "jdbc:odbc:bdetudiant";
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
con=DriverManager.getConnection(url,"","");
return con;
}

public Connexion St() throws SQLException
{
S=con.createStatement();
return S;
}


public void Close() throws SQLException{
con.close();

}
}

****************************** La classe Main ***********************************

package cas2;

public class Main {


public static void main(String arg[])
{

Etudiant ahmed=new Etudiant(1994,"ali","karim");
ahmed.Insert();


}

}

****************************************************************************
****************************************************************************


Apres fais juste gaffe car j'ai mis connexion comme type de retour pr la fonction St(), mais je suis pas sur que ca existe, il faut que tu mettes ici le type de la variable S que tu renvois.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
midou4u Messages postés 42 Date d'inscription lundi 8 décembre 2008 Statut Membre Dernière intervention 3 mars 2011 3
24 févr. 2010 à 14:14
Toujours pas de nouveau !
Tu peux compiler sur ton ordinateur et tu vas voir que ca ne marche pas !
0
xav3601 Messages postés 3289 Date d'inscription lundi 10 novembre 2008 Statut Membre Dernière intervention 2 mars 2016 311
24 févr. 2010 à 14:26
C'est cool, mais si ca ne compile ca te met un message d'erreur, donc met ton nouveau et code et le nouveau message d'erreur obtenu stp.
0
midou4u Messages postés 42 Date d'inscription lundi 8 décembre 2008 Statut Membre Dernière intervention 3 mars 2011 3
24 févr. 2010 à 14:30
Le nouveau message d'erreur est le suivant :


The method executeUpdate(String) is undefined for the type Statement

at cas2.Etudiant.Insert(Etudiant.java:27)
at cas2.Main.main(Main.java:10)
0
xav3601 Messages postés 3289 Date d'inscription lundi 10 novembre 2008 Statut Membre Dernière intervention 2 mars 2016 311
24 févr. 2010 à 14:50
Et comment as tu modifié ton code?
0
midou4u Messages postés 42 Date d'inscription lundi 8 décembre 2008 Statut Membre Dernière intervention 3 mars 2011 3
24 févr. 2010 à 14:53
C'est bon cher ami, j'ai résolu le problème !
Merci pour votre aide !
0
xav3601 Messages postés 3289 Date d'inscription lundi 10 novembre 2008 Statut Membre Dernière intervention 2 mars 2016 311
24 févr. 2010 à 14:56
Partage donc ta solution et mets le post en résolu!
0