SELECT não funciona em sqlquery (Java WEB)

Olá, pessoal.

Sou bastante novato no assunto de programação e estou realizando estudos sobre JAVA WEB com MySQL. Estou fazer um projetinho teste, muito simples, no NetBeans e esbarrei em um problema muito estranho:

Criei uma página de autenticação simples, NO PONTO ATUAL, eu entro com usuário e senha pré definidos com if else e após isso deveria vir através do banco de dados os dados correspondentes ao login que eu inseri. Ok, lógica simples para testar conexão com banco, nenhuma validação de usuário + senha sendo feita no banco, nada. Era apenas pra logar e entrar numa página com os dados do usuário que já estavam pré cadastrados no banco.

ESTAVA TUDO FUNCIONANDO.

Porém após desligar o PC e ligar novamente, PUFF, simplesmente não consigo mais. Ao tentar logar é exibido mensagem dizendo que minha syntax SQL do SELECT está incorreta, porém não enxergo o problema!

Aqui está o código da página onde ocorre o erro:

<%@taglib prefix=“c” uri=“http://java.sun.com/jsp/jstl/core”%>
<%@taglib prefix=“sql” uri=“http://java.sun.com/jsp/jstl/sql”%>

<sql:query var=“loginUsuario” dataSource=“jdbc/pooltheyrow”>

USE pooltheyrow
SELECT * FROM vw_lista_usuarios
WHERE login = '<%=request.getAttribute("user")%>'    

</sql:query>

<%@page contentType=“text/html” pageEncoding=“UTF-8” %>

PTR v2 - Ínicio

Bem Vindo!

Olá, <%=request.getAttribute("user")%>

</body>

(o HTML não aparece aqui no site)
Tentei também deixar simples a consulta no mysql, como
use pooltheyrow
SELECT nome FROM usuario

entre outras milhares de variações e não funcionou… o que me intriga é: ESTAVA FUNCIONANDO :frowning:

Este é o erro:
exception

javax.servlet.ServletException:

use pooltheyrow

SELECT nome FROM usuario

: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘SELECT nome FROM usuario’ at line 2

Não faço ideia do que pode estar errado no meu comando mysql, sendo que ele executa perfeito quando feito direto no workbench e estava a funcionar antes…

Eu não consegui identificar nenhum erro no seu SQL, tente criar uma nova classe e copiar o código para ela, as vezes tem dessa de corromper o arquivo.

Leia bem a mensagem de erro: Diz ter erro de sintaxe próximo de…

WHERE login = 'admin''

Reparou que sua sql está em volta de aspas simples?

'SELECT... 'admin''

Isso entra em conflito com a string do login, tente algo assim e veja se resolve…

...
WHERE login = "<%=request.getAttribute("user")%>"

O mysql aceita aspas duplas…

E cara, recomendo muito você pesquisar sobre servlets

https://www.caelum.com.br/apostila-java-web/servlets/

Não faça essa mistura toda no seu código, isso dificulta achar erros, mistura responsabilidades (um página html não precisa e nem deve ter lógica/regra de negócio e muito menos acessar o banco diretamente), fora deixar o código gigante, procure separar as camadas (estude MVC, vai ajudar muito)…

Caraca, eu fiz uma nova classe, copiei o código e nada… Continua ocorrendo o problema, não faço ideia do que pode ser

Fiz isso combinado com a dica do Rodrigo_Marden e mesmo assim, o problema continua. Mas vou estudar sobre os assuntos que você mencionou, irão me ajudar muito, obrigado!

Arquiivos corrompidos em java nem deveriam compilar, a JVM iria reclamar…

Mudar classe não vai resolver, o erro é claro, “erro de sintaxe”, o que significa que seu sql chega no banco mas ele não entende porque está escrito errado, pegou?

Já tentou escapar as aspas?

...
WHERE login = \'<%=request.getAttribute("user")%>\'

Seria outra forma de forçar aspas na query…

Não funcionou também. E o engraçado é que nenhuma query de alteração está funcionando, INSERT, DELETE… O erro de syntax é sempre acusado na linha onde estão essas querys :frowning:

Mais um sinal que você precisa urgentemente separar as camadas e usar ao menos JDBC para conectar no banco e fazer suas operações… leia essa apostila, mostra tudo o que você precisa para começar, bons estudos, o primeiro capítulo mostra justamente como conectar no banco…

Obrigado, já estou estudando essa apostila.
Vou tentar resolver o caso de uma outra forma, pois era pra estar funcionando, o banco está conectado corretamente, as consultas feitas diretamente no netbeans usando a mesma query tem resultado normal. A maior parte de tudo que fiz foi seguindo documentação do próprio netbeans, como esses links:
https://netbeans.org/kb/docs/web/mysql-webapp_pt_BR.html
https://netbeans.org/kb/docs/javaee/ecommerce/setup_pt_BR.html

não entendo o por quê de ter funcionado um dia e no outro não.

Cara analise bem seu Query… O Java está dizendo que há um erro de sintaxe.

Teu script está assim?
Então o problema é a falta de ; (ponto e vírgula) ao final da instrução “USE pooltheyrow”. Note que a exceção apresentada indica erro na sintaxe a partir do SELECT, ou seja, o MySQL não está distinguindo o fim da instrução USE e tenta executar tudo junto.

1 curtida