SQL 命令未正确结束 select
SQL command not properly ended with select
我正在与 Oracle SQL 开发人员一起开发 Java 应用程序。我想向数据库询问这个查询:
select * from vocabolario, vocaboli_help where verbo=1 and
vocabolario.id = vocaboli_help.id and vocaboli_help.usato = 0
当我从 SQL 开发人员 运行 查询时,查询有效,但是当 运行 它来自 Eclipse 和 stmt.executeQuery(string)
时,其中 stmt 是一个语句对象,它引发以下异常: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;
`
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 你的代码和你的 post 不同
谢谢大家,问题出在第二个 table 的名称上,但我认为这取决于 Java 代码语法,正如@are 所建议的。
我更新了代码:
private static final String NOME_DATABASE_HELP = "VOCABOLIHELP"
我还修改了数据库中的 table 名称,现在可以使用了。我认为名称中的下划线有问题(我说的问题仅在Java中),我不知道为什么。
我正在与 Oracle SQL 开发人员一起开发 Java 应用程序。我想向数据库询问这个查询:
select * from vocabolario, vocaboli_help where verbo=1 and
vocabolario.id = vocaboli_help.id and vocaboli_help.usato = 0
当我从 SQL 开发人员 运行 查询时,查询有效,但是当 运行 它来自 Eclipse 和 stmt.executeQuery(string)
时,其中 stmt 是一个语句对象,它引发以下异常: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;
`
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 你的代码和你的 post 不同
谢谢大家,问题出在第二个 table 的名称上,但我认为这取决于 Java 代码语法,正如@are 所建议的。 我更新了代码:
private static final String NOME_DATABASE_HELP = "VOCABOLIHELP"
我还修改了数据库中的 table 名称,现在可以使用了。我认为名称中的下划线有问题(我说的问题仅在Java中),我不知道为什么。