【问题标题】:SQL command not properly ended with selectSQL 命令未以 select 正确结束
【发布时间】:2015-11-29 19:17:05
【问题描述】:

我正在使用带有 Java 应用程序的 Oracle SQL Developer。我想向数据库询问这个查询:

select * from vocabolario, vocaboli_help where verbo=1 and 
 vocabolario.id = vocaboli_help.id and vocaboli_help.usato = 0

当我从 SQL 开发人员运行查询时,该查询有效,但是当使用 stmt.executeQuery(string) 从 Eclipse 运行它时,其中 stmt 是一个 Statement 对象,它会引发以下异常:SQL 命令未正确结束。 我还在字符串末尾加了一个分号,但它不起作用。

我将stmt.executeQuery(string) 与其他查询一起使用,在这些情况下没有问题。我能看到的唯一区别是,在这种情况下,AND 中有where 条件。

Java 代码:

private final static String NOME_DATABASE = "VOCABOLARIO", NOME_DATABASE_HELP ="VOCABOLI_HELP";
String type ="verbo";
    String query = "SELECT * FROM " + NOME_DATABASE + ", " + NOME_DATABASE_HELP +" WHERE " + type + " = 1 " +
                "AND " + NOME_DATABASE +".ID = " + NOME_DATABASE_HELP +".ID AND "+NOME_DATABASE_HELP+".USATO = 0";
    System.out.println(query);
    int cont = 0; 
    String result=""; 
    try {
        ResultSet res = statement.executeQuery(query);
        while(res.next()) {
            String cod = res.getString("ID").trim();
            String voc = res.getString("VOCABOLO").trim();
            String trad = res.getString("TRADUZIONE").trim();

            if(cont == n)
                result = cod + "," + voc + "," + trad;

            cont++; 
        }
    } catch (SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    return result; 

`

【问题讨论】:

  • 发布你正在执行的Java代码。
  • 在你的 sql 代码中你引用表 vocabolario_help 但在 java 中它是 vocaboli_help

标签: java oracle oracle-sqldeveloper


【解决方案1】:
select * from vocabolario vo
left join vocaboli_help voh
on vo.id= voh.id
where v.verbo=1 AND voh.usato=0

您只需要一个简单的连接。

VOCABOLI_HELP 或 vocabolario_help 你的代码和你的帖子不同

【讨论】:

  • 查询中已经有一个“简单”连接 - 尽管它在 where 子句中使用了古老的、过时的隐式连接。
  • 该查询适用于 SQL 开发人员,但不适用于 Java 应用程序,我认为这不是查询本身的问题,而是我如何用 Java 编写它。我发布了 Java 代码。
  • @user2993413 vocaboli 或 vocabolario 你确定吗?看来您使用了不同的语法。
  • "vocaboli_help" 和 "vocabolario" 是我数据库中的两个不同的表。
  • 这不是语言 - 你在 java 代码和 sql 代码中有 2 个不同的表名。 sql 可以工作并且没有语法问题,但是 java 代码没有...应该检查的第一个是名称...
【解决方案2】:

谢谢大家,问题出在第二个表的名称上,但我认为这取决于 Java 代码 sintax,正如 @are 所建议的那样。 我更新了代码:

private static final String NOME_DATABASE_HELP = "VOCABOLIHELP"

我还修改了数据库中的表名,现在它可以工作了。我认为名称中的下划线有问题(正如我所说,问题仅在 Java 中),我不知道为什么。

【讨论】:

    猜你喜欢
    • 2016-10-15
    • 1970-01-01
    • 2016-09-21
    • 2013-05-10
    • 1970-01-01
    相关资源
    最近更新 更多