Problème JAVA

Résolu
midou4u Messages postés 44 Statut Membre -  
xav3601 Messages postés 3390 Statut Membre -
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 184 Statut Membre 16
 
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 44 Statut Membre 3
 
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 44 Statut Membre 3
 
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 3390 Statut Membre 311
 
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 44 Statut Membre 3
 
Toujours pas de nouveau !
Tu peux compiler sur ton ordinateur et tu vas voir que ca ne marche pas !
0
xav3601 Messages postés 3390 Statut Membre 311
 
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 44 Statut Membre 3
 
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 3390 Statut Membre 311
 
Et comment as tu modifié ton code?
0
midou4u Messages postés 44 Statut Membre 3
 
C'est bon cher ami, j'ai résolu le problème !
Merci pour votre aide !
0
xav3601 Messages postés 3390 Statut Membre 311
 
Partage donc ta solution et mets le post en résolu!
0