Ho un problema su una query ad un db oracle effettuata tramite jdbc.
la query viene prima preparata tramite il seguente prepared statement:
i parametri da sostituire vengono letti da alcune ComboBox e gestiti nel seguente modo:codice:String selectUtenteAudit = "select ID_UTENTE_AUDIT, CREATION_TIME, ACTION, NOTE from UTENTE_AUDIT "; String whereUtenteAudit = "where note like ?"; String betweenUtrenteAudit = " and CREATION_TIME BETWEEN ? and ?"; // preparazione delle query SELECT_IMP_ERROR_BETWEEN = db.prepareStatement ( selectUtenteAudit + whereUtenteAudit + betweenUtrenteAudit ); System.out.println(selectUtenteAudit + whereUtenteAudit + betweenUtrenteAudit );
e questo infine la funzione che si occupa di eseguire la query e di leggere opportunamente l risultato:codice:gg1 = cbgg1.getSelectedItem().toString(); mm1 = cbmm1.getSelectedItem().toString(); aa1 = cbaa1.getSelectedItem().toString(); gg2 = cbgg2.getSelectedItem().toString(); mm2 = cbmm2.getSelectedItem().toString(); aa2 = cbaa2.getSelectedItem().toString(); if ( (gg1 != "") | (mm1 != "") | (aa1 != "") | (gg2 != "") | (mm2 != "") | (aa2 != "") ) { dataIn = gg1 + "-" + mm1 + "-" + aa1; dataFin = gg2 + "-" + mm2 + "-" + aa2; } main.executeQuery(id, host, account, action, ercod, dataIn, dataFin);
codice:public ArrayList<ImpError> selectErrImp(String u, String h, String a, String act, String err, String data1, String data2) { ArrayList<ImpError> errors = new ArrayList<ImpError>(); ResultSet result = null; String note = null; String esito = "%Esito=KO%"; try { // costruisce i parametri di ricerca richiesti if ( (u != null) && (a != null) && (h !=null) ) note = "%" + u + "%"; if ((h != null) && (note != null)) note = note + h + "%"; else if (h != null) note = "%" + h + "%"; if ((a != null) && (note != null)) note = note + a + esito; else if (a != null) note = "%" + a + esito; else note = esito; if ( (err != null) && (err != "Tutti")) note = note + err + "%"; // setta i parametri di ricerca if ( note != null ) { System.out.println(note + data1 + data2); SELECT_IMP_ERROR_BETWEEN.setString(1, note); } SELECT_IMP_ERROR_BETWEEN.setString(2, data1); SELECT_IMP_ERROR_BETWEEN.setString(3, data2); // esegue la query e la trasforma nell'oggetto ImpError result = SELECT_IMP_ERROR_BETWEEN.executeQuery(); errors = ImpError.trasformResult(result); ImpError.printOper(errors); } catch (SQLException e) { e.printStackTrace(); } return errors; }
l'errore che mi compare quando viene lanciata la query in questione è il seguente:
se cambio la sequenza della data mettendo anno-mese-giorno invece l'errore che mi viene restituito è il seguente:codice:java.sql.SQLDataException: ORA-01843: not a valid month
Spero qualcuno possa darmi qualche suggerimentocodice:java.sql.SQLDataException: ORA-01861: literal does not match format string

Rispondi quotando