Buongiorno,
Alcuni giorni mi avete aiutato a risolvere un un "problema" (Due combobox and "go") adesso mi sto scervellando per risolvere questo.
In poche parole... devo passare i valori di anno e mese ad un'altra Class che li elabora e mostra il risultato.
La ClassshowData se provata da sola funziona correttamente, ma anno e mese hanno valori fissi e questo non è utile
Questo è il codice con cui, dopo un test di connessione, provo ad inviare anno e mese in elaborazione
public void checkConnect(String anno, String mese){
try {
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection("jdbc:mysql://localhost/mambo","user","psw");
String workData = anno + " " + mese;
showData.showData(workData); //non-static method showData(String) cannot be referenced from a static context
}
catch(Exception sqle) {
String error = sqle.getMessage();
JOptionPane.showMessageDialog(null,error,"Errore di connessione",JOptionPane.ERROR_MESSAGE);
System.exit(1);
}
}
Come ho impostato showData mi da l'errore che vedete accanto
E questa è la classe a cui vorrei indirizzare anno e mese. Le variabili usate nel SELECT dovrebbero essere sostituite da anno e mese.
public class showData extends JPanel{
static final String USERNAME = "usr";
static final String PASSWORD = "psw";
static final String CONN_STRING = "jdbc:mysql://localhost:3306/mambo";
JTable jt;
public void showData (String workData) {
try {
LocalDate now = LocalDate.now();
int this_year = now.getYear();
int this_month = now.getMonthValue();
int daysinmonth = now.lengthOfMonth();
String questoanno =String.valueOf(this_year);
String questomese =String.valueOf(this_month);
String[] columnNames = {"Anno "+questoanno, "Mese "+questomese};
String[] colonne = {"Nome", "1", ... "31" }; // eliminato gli intermedi per comodità vostra
DefaultTableModel tableModel = new DefaultTableModel(columnNames, 0);
DefaultTableModel NomeGiorni = new DefaultTableModel(colonne, 0);
Connection conn;
conn = DriverManager.getConnection(CONN_STRING, USERNAME, PASSWORD);
Statement stmt = (Statement) conn.createStatement();
String query = "Select * from alldata where anno = "+anno+" and mese = "+mese+"";
ResultSet rs = stmt.executeQuery(query);
int i = 0;
ArrayList<String> what = new ArrayList<String>();
String[] whatArr = new String[what.size()];
while (rs.next()) {
......
whatArr = what.toArray(whatArr);
// create a single array of one row's worth of data
String[] data = { nome, d1, ... d31 } ;
// create a single array of one row's worth of data
// and add this row of data into the table model
NomeGiorni.addRow(data);
//tableModel.addRow(whatArr);
}
jt = new JTable(tableModel); // to create a new JTable
jt = new JTable(NomeGiorni); // to create a new JTable
jt.setPreferredScrollableViewportSize(new Dimension(1300, 200));
jt.setFillsViewportHeight(true);
JScrollPane jps = new JScrollPane(jt);
add(jps);
}
catch (Exception er) {System.err.println(er);}
}
/*** when this Class is under test "joe" becomes the main ***/
public static void joe() {
JFrame jf = new JFrame();
showData t = new showData();
jf.setTitle("Test");
jf.setSize(1350,400);
jf.setVisible(true);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jf.add(t);
}
}
L'entry point della classe, a mio avviso, dovrebbe essere "joe()" visto che è l'origine di tutta la parte grafica, ma non va.
Grazie per l'eventuale soluzione
paps