Enchainement de comboSelect - Java - Programmation
MarshPosté le 13-07-2011 à 10:08:54
Bonjour
je suis débutante en java et swing. Je dois développer un projet en pur java avec swing. Le but du jeu est de faire une première sélection à partir d'une selection MySQL et de cette selection , faire un deuxième select. Pour faire simple le résultat du premier select entraine un deuxième select qui lui même en entraine un 3eme qui en enchaine un 4eme . Pour l'instant je bute déjà sur le premier. En effet, la selection se fait bien, mais après que la deuxième selection se fasse (je n'ai pas tout enchainé juste 1 et 2).
Dans l'ordre : le programme me lance le combo, il fait la suite de la procédure, puis me donne la main pour selectionner.
Il me met une erreur "base nulle "ce qui est logique puisque je n'ai aps pu la selectionner. Par contre le SOP se fait bien mais après .
static String base; static String table; static String coltab; static int nbligne; public static Vector vect1 = new Vector(10); public static Vector vect2 = new Vector(10); public static void main(String[] args) {
/*********************************************************************************************************/ /************************************************ Pannel de saisie ***************************************/ /*********************************************************************************************************/ { // creation du vecteur pour liste dÔøΩroulante PanneauSaisie panneau = new PanneauSaisie(); int reponse = JOptionPane.showConfirmDialog(null, panneau, "CONNEXION A MYSQL", JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE);
/*********************************************************************************************************/ /************************************************ recuperation base ***************************/ /*********************************************************************************************************/ int i = 1; int j = 0; String utilisateur = System.getProperty("user.name" ); // recuperation du nom du compte linux String repac = System.getProperty("user.home" ); // recuperation du repertoire d'accueil linux String databaseUser = PanneauSaisie.saisieLogin.getText(); // recuperation compte utilisateur MySql String databasePassword = PanneauSaisie.saisiePassword.getText(); // recuperation mot de passe utilisateur MySql String databaseServerSystem = "localhost:3306"; // Port pour MySQL : 3306 String databaseName = "information_schema"; // recuperation du nom de la base
try { // charge le driver database Class.forName("com.mysql.jdbc.Driver" );
// creation de l'URL de sortie comprenant le login / mot de passe de l'utilisateur saisi dans le panneauContact // String databaseUrl = "jdbc:mysql://" + databaseServerSystem + "/" + databaseName + "?user=" + databaseUser + "&password=" + databasePassword; /************************************************************************/ Date maintenant = new Date(); SimpleDateFormat formatDate = new SimpleDateFormat("dd-MM-yy" ); String dateFormatee = formatDate.format(maintenant); String dateFormatee1 = formatDate.format(maintenant);
// Affiche la date en format aaaammjj pour integrer dans le nom de fichier formatDate = new SimpleDateFormat("yyyyMMdd" ); dateFormatee = formatDate.format(maintenant); /*********************************************************************************************************/ { PanneauSaisie panneauC = new PanneauSaisie();
try { /*********************************************************************************************************/ { PanneauSaisie panneauI = new PanneauSaisie(); // JOptionPane.showMessageDialog(null, "debut de procedure : "+ dateFormatee1 + "\n" );
} // charge le driver database Class.forName("com.mysql.jdbc.Driver" );
// creation de l'URl de sortie comprenant le login / mot de passe de l'utilisateur saisi dans le panneauContact String databaseUrl = "jdbc:mysql://" + databaseServerSystem + "/" + databaseName + "?user=" + databaseUser + "&password="+ databasePassword;
/******************************************************************************************************************/ // Creer la connexion database connection = DriverManager.getConnection(databaseUrl);
/* Envoi du query et recuperation des resultats */ resultset = statement.executeQuery("SELECT DISTINCT(TABLE_SCHEMA) FROM `TABLES` WHERE `TABLE_SCHEMA` not like ( 'information_schema') and `TABLE_SCHEMA` not like ( 'mysql')and `TABLE_SCHEMA` not like ( 'phpmyadmin')" );
/****************** recuperation de la liste des bases disponibles *************************************/
while (resultset.next() ) { // base = resultset.getString(1); // liste des bases disponibles vect1.addElement(resultset.getString(1)) ; } /*************************************************** saisie de la base ***********************************************************************************/ ComboSelect select = new ComboSelect(); select.pack(); select.setVisible(true); /************************************ recuperation de la liste des table dans la base *******************************************/ System.out.println("testpar.base =" + base); System.out.println("j'envoie le choix de table" ); // normalement ici j'enchaine sur un 2eme choix lié au premier }
Marsh Posté le 13-07-2011 à 10:08:54
Bonjour
je suis débutante en java et swing. Je dois développer un projet en pur java avec swing.
Le but du jeu est de faire une première sélection à partir d'une selection MySQL et de cette selection , faire un deuxième select.
Pour faire simple le résultat du premier select entraine un deuxième select qui lui même en entraine un 3eme qui en enchaine un 4eme .
Pour l'instant je bute déjà sur le premier.
En effet, la selection se fait bien, mais après que la deuxième selection se fasse (je n'ai pas tout enchainé juste 1 et 2).
Dans l'ordre : le programme me lance le combo, il fait la suite de la procédure, puis me donne la main pour selectionner.
Il me met une erreur "base nulle "ce qui est logique puisque je n'ai aps pu la selectionner. Par contre le SOP se fait bien mais après .
Ces procédures font parties d'une ensemble.
Je développe avec eclipse.
Pouvez vous me dire ou je buggue.
Merci
voilà le code de ma classe d'appel
import java.awt.*;
import java.io.*;
import java.sql.*;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.swing.*;
import java.util.Vector;
@SuppressWarnings("serial" )
class TestPar extends JPanel
{
static Connection connection;
static Statement statement;
static Connection connectiont;
static Statement statementt;
static ResultSet resultset;
static ResultSet resultsett;
static String sortie ="";
static String base;
static String table;
static String coltab;
static int nbligne;
public static Vector vect1 = new Vector(10);
public static Vector vect2 = new Vector(10);
public static void main(String[] args)
{
/*********************************************************************************************************/
/************************************************ Pannel de saisie ***************************************/
/*********************************************************************************************************/
{
// creation du vecteur pour liste dÔøΩroulante
PanneauSaisie panneau = new PanneauSaisie();
int reponse = JOptionPane.showConfirmDialog(null, panneau,
"CONNEXION A MYSQL", JOptionPane.OK_CANCEL_OPTION,
JOptionPane.PLAIN_MESSAGE);
/*********************************************************************************************************/
/************************************************ recuperation base ***************************/
/*********************************************************************************************************/
int i = 1;
int j = 0;
String utilisateur = System.getProperty("user.name" ); // recuperation du nom du compte linux
String repac = System.getProperty("user.home" ); // recuperation du repertoire d'accueil linux
String databaseUser = PanneauSaisie.saisieLogin.getText(); // recuperation compte utilisateur MySql
String databasePassword = PanneauSaisie.saisiePassword.getText(); // recuperation mot de passe utilisateur MySql
String databaseServerSystem = "localhost:3306"; // Port pour MySQL : 3306
String databaseName = "information_schema"; // recuperation du nom de la base
try {
// charge le driver database
Class.forName("com.mysql.jdbc.Driver" );
// creation de l'URL de sortie comprenant le login / mot de passe de l'utilisateur saisi dans le panneauContact
// String databaseUrl = "jdbc:mysql://" + databaseServerSystem + "/" + databaseName + "?user=" + databaseUser + "&password=" + databasePassword;
/************************************************************************/
Date maintenant = new Date();
SimpleDateFormat formatDate = new SimpleDateFormat("dd-MM-yy" );
String dateFormatee = formatDate.format(maintenant);
String dateFormatee1 = formatDate.format(maintenant);
// Affiche la date en format aaaammjj pour integrer dans le nom de fichier
formatDate = new SimpleDateFormat("yyyyMMdd" );
dateFormatee = formatDate.format(maintenant);
/*********************************************************************************************************/
{
PanneauSaisie panneauC = new PanneauSaisie();
}
formatDate = new SimpleDateFormat("kk'h' mm'm' ss's'" );
dateFormatee1 = formatDate.format(maintenant);
try {
/*********************************************************************************************************/
{
PanneauSaisie panneauI = new PanneauSaisie();
// JOptionPane.showMessageDialog(null, "debut de procedure : "+ dateFormatee1 + "\n" );
}
// charge le driver database
Class.forName("com.mysql.jdbc.Driver" );
// creation de l'URl de sortie comprenant le login / mot de passe de l'utilisateur saisi dans le panneauContact
String databaseUrl = "jdbc:mysql://" + databaseServerSystem + "/" + databaseName + "?user=" + databaseUser + "&password="+ databasePassword;
/******************************************************************************************************************/
// Creer la connexion database
connection = DriverManager.getConnection(databaseUrl);
// Creer declaration
statement = connection.createStatement();
/* Envoi du query et recuperation des resultats
*/
resultset = statement.executeQuery("SELECT DISTINCT(TABLE_SCHEMA) FROM `TABLES` WHERE `TABLE_SCHEMA` not like ( 'information_schema') and `TABLE_SCHEMA` not like ( 'mysql')and `TABLE_SCHEMA` not like ( 'phpmyadmin')" );
/****************** recuperation de la liste des bases disponibles *************************************/
while (resultset.next() )
{
// base = resultset.getString(1); // liste des bases disponibles
vect1.addElement(resultset.getString(1)) ;
}
/*************************************************** saisie de la base ***********************************************************************************/
ComboSelect select = new ComboSelect();
select.pack();
select.setVisible(true);
/************************************ recuperation de la liste des table dans la base *******************************************/
System.out.println("testpar.base =" + base);
System.out.println("j'envoie le choix de table" );
// normalement ici j'enchaine sur un 2eme choix lié au premier
}
finally{
/*********************************************************** controle d'erreur ****************************************************************************/
}
} catch (Exception e) {
e.printStackTrace();} finally {
try {
if(resultset != null) {
resultset.close();
}
if(statement != null) {
statement.close();
}
if(connection != null) {
connection.close();
}
} catch (SQLException e) {
e.printStackTrace();} finally {
}
}
}
}
}
et mon comboselect
import java.awt.Container;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class ComboSelect extends JFrame {
public static String basel;
private Container c;
private DefaultComboBoxModel comboModel;
protected JComboBox combo;
private JTextField display;
public ComboSelect() {
super("Demo de JComboBox" );
initialize();
}
private void initialize() {
c = getContentPane();
setDefaultCloseOperation(EXIT_ON_CLOSE );
comboModel = new DefaultComboBoxModel();
int ib = 0;
while (ib < TestPar.vect1.size() )
{
comboModel.addElement(TestPar.vect1.elementAt(ib));
ib++;
}
combo = new JComboBox(comboModel);
combo.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
TestPar.base = ((String)combo.getSelectedItem());
// System.out.println("base " + basel);
}
});
JPanel jp = new JPanel();
jp.setPreferredSize(new Dimension(320, 200));
jp.add(combo);
c.add(jp);
}
}
et le résultat de mes SOP
testpar.base =null
j'envoie le choix de table