Ciao, ho un po' di dubbi col mio "antico progetto"
.
Ho riempito la mia jlist così:
codice:
public static Vector fillJListMenu() {
//creo un vettore temporaneo dove inserire i campi del menu presi dal db
Vector<String> temp = new Vector<>();
Statement statement = null;
try {
statement = connection.createStatement();
ResultSet rs = statement.executeQuery("SELECT menuName FROM Menu");
while (rs.next()) {
String voices = rs.getString("menuName");
temp.addElement(voices);
}
} (qui cattura delle eccezioni)
return temp;
}
Questo metodo mi ritorna un vettore con l'elenco dei menu.
Io voglio che sia possibile cliccare su uno degli elementi dell'elenco in modo che vengano 'estratti' anche gli altri dati (ossia, l'id, autogenerato da mysql) per poterlo passare a una query sql per l'inserimento di uno o più elementi in questo menu attualmente selezionato (i due sono legati da una foreign_key che è appunto l'id del menu).
Questo è il metodo che mi gestisce, per ora, il click su un menu della jlist:
codice:
private void menuListValueChanged(javax.swing.event.ListSelectionEvent evt) {
int index = menuList.getSelectedIndex();
int size = model.getSize();
if (index >= 0) {
bDeleteMenu.setEnabled(true);
} else {
bDeleteMenu.setEnabled(false);
}
String field = (String) menuList.getSelectedValue();
menuName.setText(field);
//int menuId=DBConnection.getMenuId(field);
}
Ho pensato di recuperare l'idMenu (che nella Jlist non è presente perché è nascosto all'utente!) assegnandolo a una variabile temporanea per poterlo passare alla successiva INSERT del prodotto.
Quindi ho creato questo metodo:
codice:
//Metodo per recuperare l'id del menu dalla selezione
public static int getMenuId (String field) {
int menuId=0;
Statement statement = null;
try {
statement = connection.createStatement();
PreparedStatement ps=connection.prepareStatement("SELECT menuId FROM Menu WHERE (menuName=?)");
ps.setString(1, field);
ResultSet executeQuery = ps.executeQuery();
while (executeQuery.next()) {
menuId = executeQuery.getInt(1);
}
} (solite catture)
return menuId;
}
Funzionare funziona, per ora il menuId che mi restituisce lo stampa solo a video (però lo stampa doppio, come mai?), ma non sono tanto sicura che questo sia il modo giusto per farlo.
Commenti e/o suggerimenti?
Grazie!!