Usa i PreparedStatement, non costruire le query a mano in formato stringa: ciascun DBMS ha le sue "regole" sulla formattazione di particolari valori (in particolar modo le date).
Innanzitutto verifica che tipo di dato vuole access. Esistono 3 tipi di dato:
1) Date (solo data)
2) Time (solo orario)
3) DateTime (data e ora)
A seconda del tipo di campo dovrai passargli un valore coerente. L'esempio di query che hai postato tu lascerebbe pensare ad un tipo di date "Time" (solo orario). In questo caso esiste il tipo java.sql.Time
codice:
java.sql.Time orario = java.sql.Time.valueOf("17:05:23");
PreparedStatement pstmt = null;
ResultSet rs = null;
try {
pstmt = con.prepareStatement("SELECT * FROM Info WHERE Ora_di_Inizio = ?");
pstmt.setTime(1, orario);
rs = pstmt.executeQuery();
...
} catch (Exception e) {
e.printStackTrace();
} finally {
if (rs != null) {
try { rs.close(); } catch (Exception e) { }
}
if (pstmt != null) {
try { pstmt.close(); } catch (Exception e) { }
}
}
Per ciascun tipo di dato PreparedStatement prevede un metodo apposito: questo ti assicura la coerenza del dato passato e fa sì che sia il driver JDBC ad occuparsi della corretta conversione del dato nel formato previsto dal DBMS.
Ciao.