Conexão com o Banco retornando erro. [java.sql.SQLException]

Olá pessoal,

Estou iniciando em Java e estou fazendo um programa que me pergunte um nome, faça um select no banco de dados e me mostre em uma mensagem a senha desse nome.

Tentei de tudo quanto era forma que procurei pela internet, olhando e exemplos e tudo mais mas não consegui obter um resultado.

Poderiam me ajudar? Abaixo irei fornecer meu código e caso queira escrever um código mais simples para fazer a mesma operação, ficaria grato.

[code]/*

  • To change this template, choose Tools | Templates
  • and open the template in the editor.
    */
    package dal;

import java.sql.;
import java.util.
;
import javax.swing.JOptionPane;

/**
*

  • @author vncserver
    */
    public class UtilDB {

    public static void main(String args[]) {
    String url = “jdbc:odbc:Banco”;
    Connection connection = null;
    Statement statement = null;

     // Cria a conexão com o banco
     try {
         Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
         connection = DriverManager.getConnection(url);
         connection.setAutoCommit(false);
     } catch (ClassNotFoundException cnfex) {
         System.err.println("Driver JDBC/ODBC nao encontrado.");
         cnfex.printStackTrace();
         System.exit(1);
     } catch (SQLException sqlex) {
         System.err.println("Falha na conexao.");
         sqlex.printStackTrace();
         System.exit(1);
     }
     try {
         statement = connection.createStatement();
         String user = JOptionPane.showInputDialog(null,
                 "Entre com o usuario", "Login",
                 JOptionPane.QUESTION_MESSAGE);
         if (user == null) { // botão cancel
             statement.close();
             connection.close();
             System.exit(1);
         }
         ResultSet resultSet = statement.executeQuery(
                 "select sqlsenha from Login where sqlusuario=" + user);
         resultSet.next();
    
         JOptionPane.showMessageDialog(null, "Usuario:"
                 + resultSet.getFloat(1), "Login",
                 JOptionPane.INFORMATION_MESSAGE);
         statement.close();
         connection.close();
         System.exit(0);
     } catch (SQLException sqlex) {
         sqlex.printStackTrace();
         System.exit(1);
     }
    

    }
    }
    [/code]

O erro que aparece é o seguinte:

[quote]run:
java.sql.SQLException: [Microsoft][ODBC SQL Server Driver][SQL Server]Invalid column name ‘xande’.
at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6957)
at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7114)
at sun.jdbc.odbc.JdbcOdbc.SQLExecDirect(JdbcOdbc.java:3110)
at sun.jdbc.odbc.JdbcOdbcStatement.execute(JdbcOdbcStatement.java:338)
at sun.jdbc.odbc.JdbcOdbcStatement.executeQuery(JdbcOdbcStatement.java:253)
at dal.UtilDB.main(UtilDB.java:46)
Java Result: 1[/quote][color=darkred][/color]

O erro está nessa linha:

            ResultSet resultSet = statement.executeQuery("select sqlsenha from Login where sqlusuario=" + user);  

Faça

ResultSet resultSet = statement.executeQuery("select sqlsenha from Login where sqlusuario='" + user + "'"); 

BlackDog

[quote=Medalbr]Olá pessoal,

Estou iniciando em Java e estou fazendo um programa que me pergunte um nome, faça um select no banco de dados e me mostre em uma mensagem a senha desse nome.

Tentei de tudo quanto era forma que procurei pela internet, olhando e exemplos e tudo mais mas não consegui obter um resultado.

Poderiam me ajudar? Abaixo irei fornecer meu código e caso queira escrever um código mais simples para fazer a mesma operação, ficaria grato.

[code]/*

  • To change this template, choose Tools | Templates
  • and open the template in the editor.
    */
    package dal;

import java.sql.;
import java.util.
;
import javax.swing.JOptionPane;

/**
*

  • @author vncserver
    */
    public class UtilDB {

    public static void main(String args[]) {
    String url = “jdbc:odbc:Banco”;
    Connection connection = null;
    Statement statement = null;

     // Cria a conexão com o banco
     try {
         Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
         connection = DriverManager.getConnection(url);
         connection.setAutoCommit(false);
     } catch (ClassNotFoundException cnfex) {
         System.err.println("Driver JDBC/ODBC nao encontrado.");
         cnfex.printStackTrace();
         System.exit(1);
     } catch (SQLException sqlex) {
         System.err.println("Falha na conexao.");
         sqlex.printStackTrace();
         System.exit(1);
     }
     try {
         statement = connection.createStatement();
         String user = JOptionPane.showInputDialog(null,
                 "Entre com o usuario", "Login",
                 JOptionPane.QUESTION_MESSAGE);
         if (user == null) { // botão cancel
             statement.close();
             connection.close();
             System.exit(1);
         }
         ResultSet resultSet = statement.executeQuery(
                 "select sqlsenha from Login where sqlusuario=" + user);
         resultSet.next();
    
         JOptionPane.showMessageDialog(null, "Usuario:"
                 + resultSet.getFloat(1), "Login",
                 JOptionPane.INFORMATION_MESSAGE);
         statement.close();
         connection.close();
         System.exit(0);
     } catch (SQLException sqlex) {
         sqlex.printStackTrace();
         System.exit(1);
     }
    

    }
    }
    [/code]

O erro que aparece é o seguinte:

[quote]run:
java.sql.SQLException: [Microsoft][ODBC SQL Server Driver][SQL Server]Invalid column name ‘xande’.
at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6957)
at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7114)
at sun.jdbc.odbc.JdbcOdbc.SQLExecDirect(JdbcOdbc.java:3110)
at sun.jdbc.odbc.JdbcOdbcStatement.execute(JdbcOdbcStatement.java:338)
at sun.jdbc.odbc.JdbcOdbcStatement.executeQuery(JdbcOdbcStatement.java:253)
at dal.UtilDB.main(UtilDB.java:46)
Java Result: 1[/quote][color=darkred][/color][/quote]

Ola BlackDog, muito grato pela ajuda mas ao executar, agora aparece o seguinte erro:

[quote]java.sql.SQLException: [Microsoft][ODBC SQL Server Driver]Valor de caractere inv?lido para especifica??o de coer??o
at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6957)
at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7114)
at sun.jdbc.odbc.JdbcOdbc.SQLGetDataDouble(JdbcOdbc.java:3657)
at sun.jdbc.odbc.JdbcOdbcResultSet.getDataDouble(JdbcOdbcResultSet.java:5575)
at sun.jdbc.odbc.JdbcOdbcResultSet.getDouble(JdbcOdbcResultSet.java:738)
at sun.jdbc.odbc.JdbcOdbcResultSet.getFloat(JdbcOdbcResultSet.java:663)
at dal.UtilDB.main(UtilDB.java:49)
Java Result: 1[/quote]


Consegui resultado da seguinte forma:

JOptionPane.showMessageDialog(null, "Usuario: "+resultSet.getString(1)+" Senha: "+resultSet.getString(2),"Login",JOptionPane.INFORMATION_MESSAGE);

Porém gostaria de ajuda para ver se está certo!

Outra coisa, caso o usuario não exista, como eu faria para por uma mensagem de “Usuario inexistente”?

Abraços!

Alguem ajuda?