Meu sistema era com mysql, resolvi trocar para postgresql por motivos da empresa, então começou a dar o seguinte erro:
Exception in thread "AWT-EventQueue-0" java.lang.RuntimeException: ERRO: operador não existe: date ~~ unknown
Dica: Nenhum operador corresponde com o nome e o(s) tipo(s) de argumento(s) informados. Você precisa adicionar conversões de tipo explícitas.
Posição: 167
at dao.EventosDAO.pesquisar(EventosDAO.java:176)
A parte da conexão com o banco é a seguinte:
[code]Vector dados = new Vector();
String comando = "SELECT e.id, e.descricao, e.data, s.descricao, e.conclusao"
+ " FROM evento AS e INNER JOIN situacao AS s ON e.id_situacao = s.id "
+ "WHERE (e.descricao) LIKE '" + campoPesquisa + "%' "
+ "OR "
+ "(e.data) LIKE '" + campoPesquisa + "%' "
+ "OR "
+ "(s.descricao) LIKE '" + campoPesquisa + "%' "
+ "OR "
+ "(e.conclusao) LIKE '" + campoPesquisa + "%'"
+ "ORDER BY e.data desc";
try {
java.sql.Statement stmt = con.createStatement();
java.sql.ResultSet rs = stmt.executeQuery(comando);
while (rs.next()) {
int idevento = rs.getInt("e.id");
String situacao = rs.getString("e.descricao");
String data = new SimpleDateFormat("dd/MM/yyyy").format(rs.getDate("data"));// O ERRO APONTA PARA ESTA LINHA
String descricao = rs.getString("s.descricao");
String conclusao = rs.getString("e.conclusao");
Vector registroLido = new Vector();
registroLido.add(idevento);
registroLido.add(situacao);
registroLido.add(data);
registroLido.add(descricao);
registroLido.add(conclusao);
dados.add(registroLido);[/code]
A linha apontada pelo erro ta comentada… sabem me dizer o que tem que mudar na utilização do DATE com o banco postgre?
Exception in thread "AWT-EventQueue-0" java.lang.RuntimeException: ERRO: operador não existe: date ~~ unknown
Dica: Nenhum operador corresponde com o nome e o(s) tipo(s) de argumento(s) informados. Você precisa adicionar conversões de tipo explícitas.
Posição: 167
at dao.EventosDAO.pesquisar(EventosDAO.java:177)
Exception in thread "AWT-EventQueue-0" java.lang.RuntimeException: ERRO: operador não existe: date ~~ unknown
Dica: Nenhum operador corresponde com o nome e o(s) tipo(s) de argumento(s) informados. Você precisa adicionar conversões de tipo explícitas.
Posição: 167
at dao.EventosDAO.pesquisar(EventosDAO.java:172)
ja executou a query na mao né? ela está retornando oq vc procura?? pq o java aparentemente está ok não tem mais erros… ja o sql com os valores não sei se roda certo em sua base… tenta executar ela no banco primeiro e ver oq retorna
Poisé, antes de vc falar eu tava testando aqui, tentei um simples SELECT * FROM eventos e retornou certinh o com a conversão da data… o Jeito da conversão q eu tava usando tava até certo tbm, problema era no sql, pq essa query eu usava qnd tava usando mysql, e acabei nem mexendo nela qnd mudei de banco. Obrigado
Não sei qual é a onda desse postgre… Testei a query simples sem WHERE sireto no banco e funcionou normalmente… quando testei na aplicação acusa q nao encontra o nome da coluna no resultset, sabe me dizer o pq?
[code]Vector dados = new Vector();
String comando = "select e.id, e.descricao, e.data, s.descricao, e.conclusao "
+ "from evento as e inner join situacao as s on e.id_situacao = s.id;";
try {
java.sql.Statement stmt = con.createStatement();
java.sql.ResultSet rs = stmt.executeQuery(comando);
while (rs.next()) {
int idevento = rs.getInt("e.id");
String situacao = rs.getString("e.descricao");
String data = new SimpleDateFormat("dd/MM/yyyy").format(new Date(rs.getDate("e.data").getTime()));
String descricao = rs.getString("s.descricao");
String conclusao = rs.getString("e.conclusao");[/code]
e vc pode tentar alias nas colunas para facilitar na hora de pegar tb
ou melhor para teste faça um loop nas colunas e tente pegar pelo index da coluna… só para ver se vai ter dados[/quote]
Sou meio fraco com SQL, mas ja havia tentado buscar só pelo ID, ae acusa que nao pode encontrar o e.descricao… e essa s.descricao é pq é de outra tabela
Bom, minha tavela eventos tem id, descricao, data, id_situacao e conclusao. O id conclusão é chave estrangeira ta tabela SITUACAO q possui 2 registros, então usei o inner join pra dizer pro banco q id_situacão da tabela evento é igual a id da tabela situacao, buscando assim a descricao da tabela situacao apartir deste id_situacao. Entendeu?
[quote=nextuser]SELECT e.id as id, e.descricao as edesc, e.data as d, s.descricao as sdesc, e.conclusao as con
ai vc pega id, edesc, d, sdesc, con
nuam gosto de usar as pelavras date e data então vai um d[/quote]
Até ai td bem, mas na hora de usar o e.date no WHERE LIKE nao funciona e acaba retornando o mesmo erro de qnd começei o topico… ps: os outros WHERE LIKE funcionam corretamente
Exception in thread "AWT-EventQueue-0" java.lang.RuntimeException: ERRO: operador não existe: date ~~ unknown
Dica: Nenhum operador corresponde com o nome e o(s) tipo(s) de argumento(s) informados. Você precisa adicionar conversões de tipo explícitas.
Acho que desde o começo o problema era ai nesse like do e.data
Mas isso faz uma pesquisa dinamica, que busca o q é digitado no jtextfield por todos os campos da tabela EVENTO, o erro ta dando pq o valos inicial do JTEXTFIELD eh vazio “”, e preciso q essa busca contenha o campo data tbm