Grrr... Je d�sesp�re de trouver une r�ponse � un probl�me tout simple,
d� au fait que je d�bute en Java... Je suis s�r que vous allez trouver
�a simplissime:
J'ai une classe principale qui contient des variables qui seront
utilis�es par toutes les classes filles appell�es (ces classes
correspondent � des formulaires, des bo�tes de dialogues, etc.). Ces
variables sont appell�es � changer (par exemple: la classe m�re contient
une variable indiquant le nombre de fen�tres ouvertes, et chaque classe
fille doit y acc�der pour pouvoir l'incr�menter ou la d�cr�menter).
Le probl�me est que le compilateur me sort toujours des choses comme "il
faut que votre variable soit d�clar�e comme statique pour �tre
appell�e". P�nible ! Je ne veux pas de variable statique...
Vous avez ci-dessous un extrait de mon code: je veux "partager" la
variable conn entre toutes les classes filles appell�es � partir de la
classe m�re MainFrame (qui est elle m�me appell�e par la class
principale du programme). J'ai lu quelque part que l'on ne pouvait pas
le faire directement, donc j'ai cr�� dans la classe appelante
(MainFrame) une fonction "getConnection" qui renvoie la valeur de conn
(et "doMySQLconnection" qui la d�finie). A ce stade, pfff... J'ai tout
essay�. Si je ne d�clare pas les fonctions comme statiques, dans les
classes filles j'ai un message "A reference to an instance of class
MainFrame is required to access this non static member of it" lorsque
j'essaye de les appeller (par le biais d'un "autre_conn =
MainFrame.getConnection()")... Si je les d�clare comme statiques, comme
ci-dessous, j'ai le m�me probl�me avec la variable conn... Snif ! Je
veux bien indiquer une instance active de MainFrame, mais comment on
fait �a ?
Aur�lien Mazurie
public class MainFrame extends JFrame
{
// Acces a la base MySQL
private Connection conn;
public static void doMySQLconnection (String host, String user, String
password)
{
try { Class.forName("org.gjt.mm.mysql.Driver"); }
catch (java.lang.ClassNotFoundException e)
{
System.err.println(" Erreur ClassNotFoundException: ");
System.err.println(" " + e.getMessage());
}
try { conn =
DriverManager.getConnection("jdbc:mysql:///mabase", "", ""); }
catch (SQLException ex)
{
System.err.println(" Erreur SQLException:");
System.err.println(" " + ex.getLocalizedMessage() + "\n
(erreur " + ex.getErrorCode() + ")");
}
}
public static Connection getConnection ()
{
return conn;
}
...