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

3 respostas
M

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.

/*
 * 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);
        }
    }
}

O erro que aparece é o seguinte:

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
[color=darkred][/color]

3 Respostas

BlackDog

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

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.

/*
 * 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);
        }
    }
}

O erro que aparece é o seguinte:

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
[color=darkred][/color]

M

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

<blockquote>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</blockquote>

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!

M

Alguem ajuda?

Criado 3 de junho de 2010
Ultima resposta 4 de jun. de 2010
Respostas 3
Participantes 2