Jdbc - sql problema conversione integer

di il
4 risposte

Jdbc - sql problema conversione integer


String ValoreMaxById = "select Max(id_candidato)  from candidato";
int convertiInteroMaxById= Integer.parseInt(ValoreMaxById); --> non mi restituisce nulla
int incrementa = 0;
convertiInteroMaxById = convertiInteroMaxById + incrementa;
incrementa++;
come devo fare???
devo fare un autoincremento in java di una tabella id, senza utlizzare autoincrement di mysql

4 Risposte

  • Re: Jdbc - sql problema conversione integer

    Questo è l'errore che mi da:

    java.lang.NumberFormatException: For input string: "select Max(id_candidato) from candidato"
    at java.lang.NumberFormatException.forInputString(Unknown Source)
    at java.lang.Integer.parseInt(Unknown Source)
    at java.lang.Integer.parseInt(Unknown Source)
    at it.sync.dao.jdbc.impl.CandidatoJdbcImpl.rangeMaxId(CandidatoJdbcImpl.java:240)
    at it.sync.dao.jdbc.impl.CandidatoJdbcImpl.creaCandidato(CandidatoJdbcImpl.java:137)
    at it.sync.main.TestFactory.main(TestFactory.java:44)
  • Re: Jdbc - sql problema conversione integer

    Ma quante volte discuti di questo argomento?? Hai già 3 thread !
  • Re: Jdbc - sql problema conversione integer

    Hai ragione..ho fatto discussioni diversi perchè sono situazioni diversi più dettagliati.

    Adesso l'ho fatto in questo modo:
    
    public int rangeMaxId() {
    		// valore Max dell'id e poi somma per incrementare di 1
    		String aggiornamentoValoreMaxById = "select Max(id_candidato) from candidato";
    
    		int maxId = 0;
    		int risultato = 0;
    
    		try {
    			maxId = Integer.parseInt(aggiornamentoValoreMaxById); // NumberFormatException
    			risultato = risultato + maxId;
    			risultato++; // incremento di 1
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    
    		Connection dbConnection = null;
    		Statement statement = null;
    		ResultSet rSet = null;
    		PreparedStatement pStatement = null;
    
    		try {
    			dbConnection = Database.getConnection();
    			statement = dbConnection.createStatement();
    
    			// esegui istruzione query
    			Candidato candidato = new Candidato();
    			candidato.setId_candidato(risultato); // setta ID aggiornato
    
    			pStatement = dbConnection.prepareStatement(aggiornamentoValoreMaxById);
    			pStatement.setInt(1, candidato.getId_candidato()); // resituisci ID aggiornato
    			pStatement.executeUpdate(); // aggiorna ID
    
    		} catch (Exception e) {
    			e.printStackTrace();
    		} finally {
    			try {
    				if (dbConnection != null && statement != null && rSet != null && pStatement != null) {
    					dbConnection.close();
    					statement.close();
    					rSet.close();
    					pStatement.close();
    				}
    			} catch (Exception e2) {
    				e2.printStackTrace();
    			}
    		}
    		return risultato;
    
    	}
    
    
    Mi da sempre errore nella conversione è non riesco ad incrementare ID++
  • Re: Jdbc - sql problema conversione integer

    Proprio non ti renti conto che stai cercando di convertire la stringa SQL in un numero intero? Cioè, è come se io volessi convertire la scritta "Viva L'Italia" in intero...

    Premesso che non ti serve convertire in intero in quanto il driver JDBC è già in grado di farlo da sé (il risultato dell'esecuzione di quella istruzione SQL è già un valore numerico), quel che devi fare è eseguire l'istruzione SQL, ottenere un ResultSet corrispondente e leggere il valore restituito dal DB direttamente dall'oggetto ResultSet.
    
    // Dò per scontato che tu abbia aperto una connessione al DB e che la Connection si chiami "con"
    Statement stmt = null;
    ResultSet rs = null;
    try {
       stmt = con.createStatement();
       rs = stmt.executeQuery( aggiornamentoValoreMaxById );   // Eseguo l'istruzione SQL e ottengo il risultato
       if ((rs != null) && rs.next()) {
          maxID = rs.getInt( 1 );
          ...  // Fai quel che vuoi con maxID
       }
    } catch (Exception e) {
       e.printStackTrace();
    } finally {
       if (rs != null) {
          try { rs.close(); } catch (Exception e) { }
       }
       if (stmt != null) {
          try { stmt.close(); } catch (Exception e) { }
       }
    }
    

    Ciao.
Devi accedere o registrarti per scrivere nel forum
4 risposte