codice:
import java.awt.EventQueue;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.text.ParseException;
import javax.swing.JFormattedTextField;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.border.EmptyBorder;
import javax.swing.text.MaskFormatter;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
public class Movimentazione extends JFrame {
private JPanel contentPane;
private JTextField locazione;
private JTextField aumenta;
private JTextField diminuisci;
private int au,dim,cod,numRighe,idtemp;
private MaskFormatter formato,formato1;
private JFormattedTextField codice;
private String loc;
private ResultSet rstloc;
private boolean test=true; //per eseguire le operazioni successive
//metodo per eseguire controllo del codice
public boolean controllacodice(){
boolean codicecont=false;
// mi connetto al db e prelevo i valori
try {
ConnettiDb myDb = new ConnettiDb("localhost","Gestionale","root","root");
ResultSet rst = myDb.query("select * from materiale where Codice='"+cod+"';");
// recupera il numero di righe del RestultSet
rst.last();
numRighe = rst.getRow();
rst.first();
//System.out.println(numRighe+"codice"); // x il controllo se ci sono dati
// riposiziona il cursore di ResultSet all'inizio
if (numRighe<1){
JOptionPane.showMessageDialog(Movimentazione.this,"codice non presente nel database");
codicecont=false;
test=false;
}
else{
codicecont=true;
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// System.out.println(codicecont); //per vedere come ritorna codicecont
return codicecont;
}
//metodo per controllare se il codice è già presente in una determinata locazione
public boolean codiceinlocazione(){
boolean codiceinlocazione=false;
try{
ConnettiDb myDb = new ConnettiDb("localhost","Gestionale","root","root");
rstloc = myDb.query("select * from materiale where Codice='"+cod+"' and Locazione='"+loc+"';");
// recupera il numero di righe del RestultSet
rstloc.last();
numRighe = rstloc.getRow();
idtemp =rstloc.getInt("id");
rstloc.first();
System.out.println(numRighe+"inlocazione");//controllo se ci sono dati
// riposiziona il cursore di ResultSet all'inizio
if (numRighe<1){
JOptionPane.showMessageDialog(null,"Codice non presente nella locazione");
codiceinlocazione=false;
test=false;
}
else if(numRighe>1){
JOptionPane.showMessageDialog(null,"problema al database");
codiceinlocazione=false;
}
else{
codiceinlocazione=true;
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return codiceinlocazione;
}
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
Movimentazione frame = new Movimentazione();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public Movimentazione() {
setTitle("Movimentazione pezzi");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 300);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);
JLabel lblInserisciIlCodice = new JLabel("Inserisci il codice");
lblInserisciIlCodice.setBounds(52, 63, 155, 15);
contentPane.add(lblInserisciIlCodice);
JLabel lblInserisciLaLocazione = new JLabel("Inserisci la locazione(loc A1=A01 ecc)");
lblInserisciLaLocazione.setBounds(52, 98, 264, 15);
contentPane.add(lblInserisciLaLocazione);
JLabel lblInserisciLaQuantit = new JLabel("Inserisci n. pezzi");
lblInserisciLaQuantit.setBounds(52, 157, 155, 15);
contentPane.add(lblInserisciLaQuantit);
try {
formato =new MaskFormatter("########");
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
formato1 =new MaskFormatter("U##");
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
codice = new JFormattedTextField(formato);
codice.setBounds(258, 61, 114, 19);
contentPane.add(codice);
locazione = new JFormattedTextField(formato1);
locazione.setBounds(334, 96, 38, 19);
contentPane.add(locazione);
aumenta = new JTextField();
aumenta.setColumns(10);
aumenta.setBounds(258, 155, 114, 19);
contentPane.add(aumenta);
JLabel lblEliminaNPezzi = new JLabel("Elimina n. pezzi");
lblEliminaNPezzi.setBounds(52, 194, 155, 15);
contentPane.add(lblEliminaNPezzi);
diminuisci = new JTextField();
diminuisci.setColumns(10);
diminuisci.setBounds(258, 186, 114, 19);
contentPane.add(diminuisci);
// bottone e listener
JButton btnEsegui = new JButton("Esegui");
btnEsegui.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
String temp=" "; // prendo una stringa vuota di 8 caratteri (come il formatter)
// per controllare che codice non sia vuoto
String temp1=" "; // prendo una stringa vuota di 3 caratteri (come il formatter)
// per controllare che locazione non sia vuoto
if(codice.getText().equals(temp) || locazione.getText().equals(temp1)){
JOptionPane.showMessageDialog(null, "Inserisci il codice e la locazione");
test=false;
}
else{
String codic=codice.getText(); // prendo la stringa di codice
cod=Integer.parseInt(codic); // la trasformo in un numero
loc=locazione.getText(); //prendo la stringa da locazione
test=true;
}
String temp2="" ; // stringa per il controllo dei campi aumenta e diminuisci
System.out.println(test);
if(aumenta.getText().equals(temp2) && diminuisci.getText().equals(temp2) && test){
JOptionPane.showMessageDialog(null, "Inserisci un valore");
test=false;
}
if(aumenta.getText().equals(temp2) && test){
test=false;
}
else{
String aument=aumenta.getText(); // prendo la stringa di aumenta
au=Integer.parseInt(aument); // la trasformo in un numero
test=true;
}
if(diminuisci.getText().equals(temp2)&& test){
test=false;
}
else{
String diminuisc=diminuisci.getText(); // prendo la stringa di diminuisci
dim=Integer.parseInt(diminuisc); // la trasformo in un numero
test=true;
}
if(au>0 && dim>0 && test){ //controllo che i campi aumenta e diminuisci non siano pieni insieme
JOptionPane.showMessageDialog(Movimentazione.this,"Non puoi inserire e togliere pezzi contemporaneamente");
test=false;
}
System.out.println(controllacodice()+" "+codiceinlocazione()); //controllo dei metodi
if(codiceinlocazione() && controllacodice() ){
try {
ConnettiDb myDb = new ConnettiDb("localhost","Gestionale","root","root");
Connection con = myDb.getConnessione();
rstloc = myDb.query("select * from materiale where Codice='"+cod+"' and Locazione='"+loc+"';");
rstloc.last();
Statement dati = con.createStatement(); // si crea un oggetto Statement
String sql="";
rstloc.first();
if(au>0){
int npezzi=rstloc.getInt("Quantità");
int npezziagg=npezzi+au;
sql="update materiale set Quantità="+npezziagg+" where id="+idtemp+";";
System.out.println(sql);
Movimentazione.this.dispose();
dati.executeUpdate(sql);// si esegue l'operazione di insert
dati.close();// si chiude lo Statement
con.close();//si chiude la connessione
}
if(dim>0){
int npezzi=rstloc.getInt("Quantità");
int npezziagg=npezzi-dim;
sql="update materiale set Quantità="+npezziagg+" where id="+idtemp+";";
System.out.println(sql);
Movimentazione.this.dispose();
dati.executeUpdate(sql);// si esegue l'operazione di insert
dati.close();// si chiude lo Statement
con.close();//si chiude la connessione
}
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
});
btnEsegui.setBounds(255, 233, 117, 25);
contentPane.add(btnEsegui);
}
}
Il test(boolean) dovrebbe fermare l'applicazione via via che i campi non sono selezionati o incorretti , invece da un errore :