【问题标题】:SQL Query works in SQLDeveloper but won't run in JDBCSQL 查询可在 SQLDeveloper 中运行,但不能在 JDBC 中运行
【发布时间】:2022-01-20 00:11:41
【问题描述】:

我的查询是“SELECT mbr,ime,prz FROM radnik WHERE mbr IN (SELECT DISTINCT sef FROM radnik)" ,它在 SQLDeveloper 中完成了这项工作。但是当我在 Eclipse 中运行它时,我收到错误“SQL 命令未正确结束”。即使从查询中删除分号后问题仍然存在. 代码如下:


public class Upit2_Sefovi {

    public static void main(String[] args) {
        
        try (Connection connection = ConnectionUtil_Basic.getConnection();
                PreparedStatement preparedStatement = connection.prepareStatement(generateQuery());
                ResultSet resultSet = preparedStatement.executeQuery()) {
            
            while (resultSet.next()) {
                int mbr = resultSet.getInt(1);
                String ime = resultSet.getString(2);
                String prezime = resultSet.getString(3);
                int brRadnika=ExecuteFun.getRadnici(mbr);

                System.out.printf("%-4d %-8s %-8s %-4d\n", mbr, ime, prezime,brRadnika);
            }
                
            
            
        }catch(SQLException e) {
            e.printStackTrace();
        }
    }
    
    private static String generateQuery() {
        String query = "select mbr,ime,prz"
                + " from radnik"
                + "where mbr in (select distinct sef from radnik)";
        return query;
    }
    
    

}




这是堆栈跟踪:

java.sql.SQLSyntaxErrorException: ORA-00933: SQL command not properly ended

    at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:447)
    at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:396)
    at oracle.jdbc.driver.T4C8Oall.processError(T4C8Oall.java:951)
    at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:513)
    at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:227)
    at oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:531)
    at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:208)
    at oracle.jdbc.driver.T4CPreparedStatement.executeForDescribe(T4CPreparedStatement.java:886)
    at oracle.jdbc.driver.OracleStatement.executeMaybeDescribe(OracleStatement.java:1175)
    at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1296)
    at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3613)
    at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:3657)
    at oracle.jdbc.driver.OraclePreparedStatementWrapper.executeQuery(OraclePreparedStatementWrapper.java:1495)
    at upit2.Upit2_Sefovi.main(Upit2_Sefovi.java:16)

【问题讨论】:

    标签: java sql database jdbc


    【解决方案1】:

    radnik 和 where 之间需要一个空格。

            String query = "select mbr,ime,prz"
                    + " from radnik"
                    + " where mbr in (select distinct sef from radnik)";
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-02
      • 2016-07-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多