Ho un problema su una query ad un db oracle effettuata tramite jdbc.
la query viene prima preparata tramite il seguente prepared statement:
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 );
i parametri da sostituire vengono letti da alcune ComboBox e gestiti nel seguente modo:
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);
e questo infine la funzione che si occupa di eseguire la query e di leggere opportunamente l risultato:
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:
codice:
java.sql.SQLDataException: ORA-01843: not a valid month
se cambio la sequenza della data mettendo anno-mese-giorno invece l'errore che mi viene restituito è il seguente:
codice:
java.sql.SQLDataException: ORA-01861: literal does not match format string
Spero qualcuno possa darmi qualche suggerimento