Olá, sou novo aqui e peço desculpas se estou fazendo algo errado.
Procurei em tudo quanto foi lugar, mas não encontrei a resposta. Já vi tópicos parecidos aqui mas não resolveu minha questão.
Estou tentando fazer uma simples agenda, em que, já consigo gravar no banco de dados e fazer a leitura também, porém necessito fazer uma pesquisa através da data. Agradeço desde já a ajuda!
Classe DAO
public List<Agenda> readData(Date dataescolhida) {
Connection con = ConnectionFactory.getConnection();
PreparedStatement stmt = null;
ResultSet rs = null;
List<Agenda> horarios = new ArrayList<>();
try {
stmt = con.prepareStatement("SELECT paciente FROM agenda WHERE date_format(dataescolhida,'%d/%m/%Y') LIKE '?'");
stmt.setDate(1, (java.sql.Date) dataescolhida); //aqui está o erro
rs = stmt.executeQuery();
while (rs.next()) {
Agenda agenda = new Agenda();
agenda.setPaciente(rs.getString("paciente"));
horarios.add(agenda);
}
} catch (SQLException ex) {
Logger.getLogger(AgendaDAO.class.getName()).log(Level.SEVERE, null, ex);
} finally {
ConnectionFactory.closeConnection(con, stmt, rs);
}
Onde faço a pesquisa
java.sql.Date data;
public void readAgenda() {
DefaultTableModel modelo = (DefaultTableModel) tbTeste.getModel();
modelo.setNumRows(0);
try {
String strData = lbData2.getText();
SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy");
data = new java.sql.Date(format.parse(strData).getTime());
AgendaDAO dao = new AgendaDAO();
for (Agenda a : dao.readData(data)) {
modelo.addRow(new Object[]{
a.getPaciente()
});
}
} catch (Exception e) {
JOptionPane.showMessageDialog(null, "erro");
}
}
Erro:
set 23, 2018 6:54:55 PM model.dao.AgendaDAO readData
GRAVE: null
java.sql.SQLException: Parameter index out of range (1 > number of parameters, which is 0).
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1074)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:988)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:974)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:919)
at com.mysql.jdbc.PreparedStatement.checkBounds(PreparedStatement.java:3813)
at com.mysql.jdbc.PreparedStatement.setInternal(PreparedStatement.java:3795)
at com.mysql.jdbc.PreparedStatement.setInternal(PreparedStatement.java:3840)
at com.mysql.jdbc.PreparedStatement.setDate(PreparedStatement.java:3715)
at com.mysql.jdbc.PreparedStatement.setDate(PreparedStatement.java:3684)
at model.dao.AgendaDAO.readData(AgendaDAO.java:138)
at Telas.TelaAgenda.readAgenda(TelaAgenda.java:2307)
at Telas.TelaAgenda.(TelaAgenda.java:49)
at Telas.TelaAgenda$40.run(TelaAgenda.java:2384)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:756)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:709)
at java.awt.EventQueue$3.run(EventQueue.java:703)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:726)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)