andbin ha scritto:
saraciao ha scritto:
se voglio eliminare l'ultimo metodo e voglio controllarlo da db come dovrò poi scrivere in java?
Se vuoi replicare la logica di capObbligatorio a livello di DB, devi applicare un CONSTRAINT di check, mettendo anche NOT NULL sulla colonna del CAP.
Però per sapere cosa va scritto esattamente, devi precisare quale DBMS stai usando. (MySQL? PostgreSQL? ecc...). La maggior parte dei DBMS ha anche il supporto delle regex, quindi si può replicare [0-9]{5} in maniera uguale (o quasi) a Java.
L'altro aspetto da considerare è che se metti un vincolo così su DB, il problema lo scopri solo quando fai una INSERT (o UPDATE), non prima. E nel caso di vincolo violato, ti becchi sicuramente una eccezione. Quale, dipende dallo strato di accesso al DB che stai usando (JDBC puro? Spring JdbcTemplate? ecc...).
Ciao, grazie per avermi risposto, uso pgAdmin è il vincolo lo scrivo cosi
ALTER TABLE Indirizzo
ADD CONSTRAINT utente_cap CHECK (CAP ~* '^ [0-9]{5}+$');
e in tal modo ho aggiunto i vari vincoli ma il problema è che poi poiché in java non so come fare in modo che se l'utente nella GUI di iscrizione inserisce un cap di 7 numero si ha una dialog d'errore con il messaggio "cap errato". Ho un controller in cui ho tale dialog d'errore:
public void VisualizzazioneAvvisi(List<String> messaggiErrore) {
if (dialogErrore == null) {
dialogErrore = new VisualizzazioneAvvisi(this);
dialogErrore.setBounds(0, 0,360, 150);
dialogErrore.setLocationRelativeTo(menu);
}
dialogErrore.setMessaggiErrore(messaggiErrore);
dialogErrore.setVisible(true);
}
Ma come faccio a far ciò in tale metodo della Gui di registrazione
@Override
public void actionPerformed(ActionEvent e) {
if(e.getSource().equals(Button_Iscriviti)) {
String nome=textField_Nome.getText();
String cognome=textField_Cognome.getText();
String email=textField_Email.getText();
String numeroTelefonico=textField_NumTelefonico.getText();
String password=textField_Password.getText();
String provincia=textField_Provincia.getText();
String citta=textField_Città.getText();
String Cap=textField_Cap.getText();
String nomeVia=textField_NomeVia.getText();
int numCivico = 0;
Validazioni validazioni = new Validazioni();
validazioni.emailObbligatoria(email, "Inserisci una email", "La email inserita non è valida");
validazioni.provinciaObbligatoria(provincia, "Inserisci una provincia", "La provincia inserita non è valida[2 caratteri]");
validazioni.capObbligatorio(Cap, "Inserisci un CAP", "Il CAP inserito non è valido[5 caratteri]");
validazioni.numeroCivicoObbligatorio(Integer.toString(numCivico), "Inserisci il numero civico", "Il numero Civico inserita non è valida[Inserire solo valori numerici]");
validazioni.nomeViaObbligatoria(nomeVia, "Inserisci una via", "La via inserita non è valida");
validazioni.cittaObbligatoria(citta, "Inserisci una citta", "La citta inserita non è valida");
validazioni.passwordObbligatoria(password, "Inserisci una password", "La password inserita non è valida[Almeno una lettera maiuscola,Almeno una lettera minuscola,Almeno una cifra,Almeno un carattere speciale,Lunghezza minima 8]");
validazioni.numeroTelefonicoObbligatoria(numeroTelefonico, "Inserisci un numero di telefono", "Il numero di telefono inserito non è valido[8 valori]");
validazioni.nomeObbligatoria(nome, "Inserisci un nome", "Il nome inserito non è valido");
validazioni.cognomeObbligatoria(cognome, "Inserisci un cognome", "Il cognome inserito non è valido");
if (validazioni.valido()) {
numCivico=Integer.parseInt(textField_N_Civico.getText().toString());
ctrl.effettuaRegistrazione(nome, cognome, email, password, numeroTelefonico, nomeVia, numCivico, Cap, citta, provincia);
if(ctrl.effettuaRegistrazione(nome, cognome, email, password, numeroTelefonico, nomeVia, numCivico, Cap, citta, provincia)==false) {
ctrl.VisualizzazioneAvvisi(Arrays.asList("Utente è stato registrato con successo"));
} else {
ctrl.VisualizzazioneAvvisi(Arrays.asList("Utente già presente"));
ctrl.visualizzazioneLogin();
}
}
else {
ctrl.VisualizzazioneAvvisi(validazioni.getMessaggiErrore());
}
?
Grazie mille