【问题标题】:Error with JDBC Mysql SELECT!! Syntax error [duplicate]JDBC Mysql SELECT 出错!!语法错误[重复]
【发布时间】:2021-12-11 05:41:55
【问题描述】:

当我尝试通过 java 应用程序在 MySQL 上运行 SELECT 时,我收到了语法错误的消息。

已尝试在 MySQL Workbench 上运行此查询,并且运行正常。

错误:

java.sql.SQLSyntaxErrorException:您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以了解在“?”附近使用的正确语法在第 1 行

这是我的代码:

try {
        String sql = "SELECT CPF_USUARIO, NOME_USUARIO, LOGIN, "
                + "DATA_NASCIMENTO, EMAIL, CELULAR_USUARIO, "
                + "DATA_CADASTRO, HORA_CADASTRO, GENERO "
                + "FROM TICKETERIA.TB_USUARIO "
                + "WHERE CPF_USUARIO = ?;";
        
        pstmt = conn.prepareStatement(sql);
        pstmt.setLong(1, cpfUsuario);
        System.out.println(pstmt);
        ResultSet rs = pstmt.executeQuery(sql);
        Usuario usuarioResult = null;
        
        while(rs.next()) {
            usuarioResult = new Usuario();
            usuarioResult.setCpfUsuario(rs.getLong("CPF_USUARIO"));
            usuarioResult.setNomeUsuario(rs.getString("NOME_USUARIO"));
            usuarioResult.setLogin(rs.getString("LOGIN"));
            usuarioResult.setEmail(rs.getString("EMAIL"));
            usuarioResult.setCelular(rs.getString("CELULAR"));
            usuarioResult.setGeneroUsuario(rs.getString("GENERO"));
            usuarioResult.setHoraCadastroStr(rs.getString("HORA_CADASTRO"));
            
            Date dataAux = rs.getDate("DATA_NASCIMENTO");
            DateFormat df = new SimpleDateFormat("dd/MM/yyyy");
            usuarioResult.setNascimentoStr(df.format(dataAux));
            
            dataAux = rs.getDate("DATA_CADASTRO");
            usuarioResult.setDataCadastroStr(df.format(dataAux));
        }
        return usuarioResult;
    } catch (SQLException e) {
        e.printStackTrace(System.err);
        System.err.println("SQLState: " + ((SQLException) e).getSQLState());
        System.err.println("Error Code: " + ((SQLException) e).getErrorCode());
        System.err.println("Message: " + e.getMessage());
        Throwable t = e.getCause();
        while (t != null) {
            System.out.println("Cause: " + t);
            t = t.getCause();
        }
        return null;
    }
} 

【问题讨论】:

    标签: java mysql select jdbc prepared-statement


    【解决方案1】:

    正确的呼叫是.executeQuery();。没有争论。你要求数据库执行文字查询,WITH问号,而不应用它的 .setLong` 部分。

    【讨论】:

    • 哈哈哈!我永远不会看到这 3 个字母...谢谢,它有效!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-21
    • 2015-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-30
    相关资源
    最近更新 更多