Erro com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL s

4 respostas
J

E ai Galera, estou com um problema espero que possam me ajudar...

O Seguinte, fiz um código para validar acesso(login e senha), porém ele da o seguinte erro:
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: 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 'from' at line 1

Já procurei outros tópicos, com erros semelhantes porém não consegui achar a solução do meu problema.

Abaixo código que efetuou a validação:

try {
            conexao.executaSQL("select * from login where LOGIN_USER='"+ TXT_USUARIO.getText()+"'");
            conexao.rs.first();
            if(conexao.rs.getString("LOGIN_SENHA").equals(TXT_SENHA.getText())){
           
                frmPrincipal frm = new frmPrincipal(TXT_USUARIO.getText());
                frm.setVisible(true);
                
            
           }else{
            JOptionPane.showMessageDialog(rootPane,"Usuário ou senha inválidos!");
            }
            
           
        } catch (SQLException ex) {
            JOptionPane.showMessageDialog(null,"Usuário ou senha inválidos!");
            
        }

abaixo código que executo o SQL:

package DAO;

import java.sql.*;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;


public class ConectaBanco {
    
  public  Statement stm; // responsavel por realizar pesquisa no meu banco de dados
  public  ResultSet rs; // responsavel por armazenar o resultado de minha pesquisa
  private String driver = "com.mysql.jdbc.Driver"; // responsavel por identifica meu banco de dados
  private String caminho = "jdbc:mysql://localhost:3306/tcc"; // informo o local e nome do meu database
  private String usuario = "root"; // informo o usuario do banco de dados
  private String senha = "dados123"; // informo a senha do usuario do meu banco de dados
  public  Connection conn;// realiza minha conexão com o banco de dados
  public PreparedStatement pst;
  public void conexao(){
  
        try {
          System.setProperty("jdbc.driver", driver);
          conn= DriverManager.getConnection(caminho,usuario,senha);
          
      } catch (SQLException ex) {
          Logger.getLogger(ConectaBanco.class.getName()).log(Level.SEVERE, null, ex);
            JOptionPane.showMessageDialog(null, "Erro de conexão\n"+ex.getMessage());
      }
  }
  
  public void executaSQL(String sql){
  
      try {
          stm = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
          rs = stm.executeQuery(sql);
          
      } catch (SQLException ex) {
          Logger.getLogger(ConectaBanco.class.getName()).log(Level.SEVERE, null, ex);
          JOptionPane.showMessageDialog(null, "Erro no Executa SQL \n"+ex.getMessage());
      }
  
  
  
  }
  
  public void desconecta(){
  
      try {
          conn.close();
      } catch (SQLException ex) {
          Logger.getLogger(ConectaBanco.class.getName()).log(Level.SEVERE, null, ex);
          
           JOptionPane.showMessageDialog(null, "Erro ao Fechar a conexão\n"+ex.getMessage());
      }
  }

    public PreparedStatement prepareStatement(String select__from_login_where_LOGIN_USER_like_) {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }

   
}

Galera sou novato em programação, se puderem me dar uma força agradeço.

Desde já agradeço !!!

Abraço...

4 Respostas

Luiz_Augusto_Prado
joseerikbelmonte:
E ai Galera, estou com um problema espero que possam me ajudar...

O Seguinte, fiz um código para validar acesso(login e senha), porém ele da o seguinte erro:
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: 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 'from' at line 1

Já procurei outros tópicos, com erros semelhantes porém não consegui achar a solução do meu problema.

Abaixo código que efetuou a validação:

try {
            conexao.executaSQL("select * from login where LOGIN_USER='"+ TXT_USUARIO.getText()+"'");
            conexao.rs.first();
            if(conexao.rs.getString("LOGIN_SENHA").equals(TXT_SENHA.getText())){
           
                frmPrincipal frm = new frmPrincipal(TXT_USUARIO.getText());
                frm.setVisible(true);
                
            
           }else{
            JOptionPane.showMessageDialog(rootPane,"Usuário ou senha inválidos!");
            }
            
           
        } catch (SQLException ex) {
            JOptionPane.showMessageDialog(null,"Usuário ou senha inválidos!");
            
        }

abaixo código que executo o SQL:

package DAO;

import java.sql.*;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;


public class ConectaBanco {
    
  public  Statement stm; // responsavel por realizar pesquisa no meu banco de dados
  public  ResultSet rs; // responsavel por armazenar o resultado de minha pesquisa
  private String driver = "com.mysql.jdbc.Driver"; // responsavel por identifica meu banco de dados
  private String caminho = "jdbc:mysql://localhost:3306/tcc"; // informo o local e nome do meu database
  private String usuario = "root"; // informo o usuario do banco de dados
  private String senha = "dados123"; // informo a senha do usuario do meu banco de dados
  public  Connection conn;// realiza minha conexão com o banco de dados
  public PreparedStatement pst;
  public void conexao(){
  
        try {
          System.setProperty("jdbc.driver", driver);
          conn= DriverManager.getConnection(caminho,usuario,senha);
          
      } catch (SQLException ex) {
          Logger.getLogger(ConectaBanco.class.getName()).log(Level.SEVERE, null, ex);
            JOptionPane.showMessageDialog(null, "Erro de conexão\n"+ex.getMessage());
      }
  }
  
  public void executaSQL(String sql){
  
      try {
          stm = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
          rs = stm.executeQuery(sql);
          
      } catch (SQLException ex) {
          Logger.getLogger(ConectaBanco.class.getName()).log(Level.SEVERE, null, ex);
          JOptionPane.showMessageDialog(null, "Erro no Executa SQL \n"+ex.getMessage());
      }
  
  
  
  }
  
  public void desconecta(){
  
      try {
          conn.close();
      } catch (SQLException ex) {
          Logger.getLogger(ConectaBanco.class.getName()).log(Level.SEVERE, null, ex);
          
           JOptionPane.showMessageDialog(null, "Erro ao Fechar a conexão\n"+ex.getMessage());
      }
  }

    public PreparedStatement prepareStatement(String select__from_login_where_LOGIN_USER_like_) {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }

   
}

Galera sou novato em programação, se puderem me dar uma força agradeço.

Desde já agradeço !!!

Abraço...

Aparentemente não existe nada errado no seu select.
testa o que tá vindo aqui:
TXT_USUARIO.getText()

normalmente esse tipo de erro ocorre quando tem algum caractere especial no meio.
vc copiou e colou esse select de algum lugar? tenta escreve na mão pra ver se o erro se repete.
da um print na string do seu select antes de fazer a consulta.

tenta usar prepared statements. É melhor que utilizar concatenação de strings.

J

Bom dia Luiz,

Então não copie e coloquei, escrevi a mão mesmo. Tentei fazer com o PreparedStatement porém o erro persiste.

public void executaSQL(String sql){
  
      try {
          PreparedStatement stm = conn.prepareStatement(sql);
          rs = stm.executeQuery();
          
      } catch (SQLException ex) {
          Logger.getLogger(ConectaBanco.class.getName()).log(Level.SEVERE, null, ex);
          JOptionPane.showMessageDialog(null, "Erro no Executa SQL \n"+ex.getMessage());
      }
  
  
  
  }
Luiz_Augusto_Prado

Se é novo em programação, como está seus conhecimentos em POO?

onde está o main do seu codigo? vamos ver tudo. desde o inicia o que tá fazendo.
outra… vc disse que usou preparedstatement… só por curiosidade, sabe o que isso faz?

public PreparedStatement prepareStatement(String select__from_login_where_LOGIN_USER_like_) {  
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.  
    }
D

cara…sei q se passou muito tempo…mas acho q sei qual seu erro…

tenta assim…SELECT * FROM login WHERE …

ou assim…SELECT * FROM bancodedados.login WHERE …

mas não se esqueça dos ``

Criado 21 de novembro de 2014
Ultima resposta 25 de ago. de 2015
Respostas 4
Participantes 3