Olá Pessoal quero fazer uma consulta usar uma Query mas não estou conseguindo.
Estou utilizando o Acces como BD. Nele tenho a tabela Paciente e os seguintes campos DataEntra e DataSaida. Com essas datas quero faz o seguinte, exemplo quantos dias O Paciente João fico no hospital. Ja vi aqui alguns post sobre Between, mas fiquei com duvida ainda. Depois que só da uma mensagem na Tela, tipo o João ficou 29 Dias.
JOptionPane.showMessageDialog(null, " João tals ... ");
Esta certo?
[code]String sql="SELECT * FROM Paciente WHERE DataEntrada between ‘01/01/2010’ and DataSaida ‘01/12/2010’
O erro diz que a String literal não foi fechada, ou seja, faltou fachar as aspas.
[code]String sql=“SELECT * FROM Paciente WHERE DataEntrada between ‘01/01/2010’ and DataSaida ‘01/12/2010’” // Faltou fechar as aspas aqui.
Resultset rs=statemente.executeQuery(sql); // Aqui não vai aspas. Com as aspas você vai tentar executar a palavra “sql” no banco de dados, quando a intenção provavelmente seja executar a query que está na variável sql.[/code]
[code]if(e.getSource()==btConsulta)
{
String sql=“SELECT count (*) as quantidade FROM Paciente WHERE DataEntrada between ‘01/01/2010’ and DataSaida ‘01/12/2010’”
[code]String sql=“SELECT count (*) as quantidade FROM Paciente WHERE DataEntrada between ‘01/01/2010’ and ‘01/12/2010’”; // Faltou finalizar a linha com ponto e vírgula
resultSet rs=statement.executeQuery(sql);
if(rs.next)
{
System.out.println(rs.getInt("quantidade")); // Pega um valor do tipo inteiro do campo "quantidade" (assim como foi nomeado o resultado em sua consulta). Aqui usei o Sysout, mas pode ser qualquer outra forma de exibição como o JOptionPane.
}
}
}[/code]Ps.: Não esqueça de arrumar a sua query. Se não vai ser lançada uma SQLException.
[code] public void actionPerformed(ActionEvent e)
{
if(e.getSource()==btConsulta)
{
String sql=“SELECT count (*) as quantidade FROM Paciente WHERE DataEntrada between ‘01/01/2010’ and ‘01/12/2010’”;
ResultSet rs=statement.executeQueryu;
if(rs.nextb)
try { // início do bloco
// código que pode lançar a exceção...
} // fim do bloco
catch (Exception e) {
// código que trata a exceção...
}O catch vem após fechar o bloco try. No seu código o catch está dentro do bloco do try, por isso o erro dizendo que não encontrou o try.
[code]try
{
String sql=“SELECT count (*) as quantidade FROM Paciente WHERE DataEntrada between ‘01/01/2010’ and ‘01/12/2010’”;
ResultSet rs=statement.executeQuery(sql);
{
[/code]
Conseguir entender a lógica não ocorreu nenhum erro, mas acho que encontrei um grande problema, a linha na imprimi. E estou usando JTextfield para receber essas datas e no banco de dados Access estou salvando como Texto com campo de 8 digitos. Meu amigo disse tenho que converte ela, ai que está ! Legal e agora.
É, esse é um dos problemas de se armazenar datas em banco de dados no formato texto. Você não pode usar operadores <, >, between e assim por diante. Assim como nada impede que eu armazene um texto qualquer, já que o campo não passa de uma String.
É possível converter a String em data, mas primeiro sugiro que mude o campo no banco de dados para o formato de data. No Access aparece como Data/Hora. Em java, você vai recuperar este valor em um objeto java.sql.Date.