Java SQL命令未正确结束
已尝试运行运行此oracle SQL查询的java方法Java SQL命令未正确结束,java,sql,oracle,jdbc,Java,Sql,Oracle,Jdbc,已尝试运行运行此oracle SQL查询的java方法 String query = "SELECT count(*) " + "FROM TASK t " + "WHERE t.TASK_ID = ? "; 我一直发现SQL命令没有正确结束 打印字符串并获得此输出 从任务t中选择计数(*),其中t.TASK_ID= *经过编辑以反映新的更改,该方法基本上查找taskID,如果它存在,则返回true,否则返回false p
String query =
"SELECT count(*) " +
"FROM TASK t " +
"WHERE t.TASK_ID = ? ";
我一直发现SQL命令没有正确结束
打印字符串并获得此输出
从任务t中选择计数(*),其中t.TASK_ID=
*经过编辑以反映新的更改,该方法基本上查找taskID,如果它存在,则返回true,否则返回false
public boolean loadTaskId(Integer taskId) throws SQLException{
int count = 0;
String query =
"SELECT count(*) " +
"FROM TASK t " +
"WHERE t.TASK_ID = ?";
OraclePreparedStatement stmt = prepareStatement(query);
stmt.setInt(1, taskId);
ResultSet rs = stmt.executeQuery();
if (rs.next()) { // only load the first one
count = rs.getInt(1);
}
stmt.close();
if ( count == 0) {
return false;
} else {
return true;
}
}
您没有添加空格
您没有添加空格您可能希望修改SQL语句以包含一些空格:
String query =
"SELECT count(*) " +
"FROM TASK t " +
"WHERE t.TASK_ID = ?";
这可能就是问题所在。您可以将字符串打印到System.out以确认。您可能需要修改SQL语句以包含一些空格:
String query =
"SELECT count(*) " +
"FROM TASK t " +
"WHERE t.TASK_ID = ?";
这可能就是问题所在。您可以将字符串打印到System.out进行确认。找出了问题所在,我没有删除库中的.jar文件,并且该文件存在一些名称冲突,无法重建*拍打我自己的头发现了什么问题,我没有删除库中的.jar文件,它有一些名称冲突,没有重建*拍打自己的头“从任务twhere t.jdeis_task_id=?”中选择count(*)不是有效的sql。当您发现错误时,请考虑将查询打印为调试的一部分。我使用Oracle PravaReDealScript,因此在设置查询字符串后,我设置了“替换”的值。使用数字并尝试过仍然不起作用您可以发布其他相关代码吗?您准备的语句,分配参数值,执行查询…?@synergy我的注释的根是“twhere”无效。这是由于在构造查询时字符串中缺少尾随空格造成的(正如JW在其回答中所述)“从任务tw选择计数(*),其中t.jdeis_task_id=?”不是有效的sql。当您发现错误时,请考虑将查询打印为调试的一部分。我使用Oracle PravaReDealScript,因此在设置查询字符串后,我设置了“替换”的值。使用数字并尝试过仍然不起作用您可以发布其他相关代码吗?您准备的语句,分配参数值,执行查询…?@synergy我的注释的根是“twhere”无效。这是由于在构造查询时字符串中缺少尾随空格造成的(正如JW在其回答中所述),我不敢相信我错过了这一点,谢谢,但它仍然不起作用,给出了相同的错误。@JW不是
?
JDBC变量占位符字符吗?是的,所以不是?我刚刚输入了2000,但是使用OraclePreparedStatement从TASK t中获取了SELECT count(*),其中t.TASK_ID=?作为我打印字符串后的输出,只是为了确认-如果您直接在Oracle中运行上述SQL,您会得到错误或有效的结果集吗?我不敢相信我错过了,谢谢,但它仍然不起作用,给出了相同的错误。@JW不是?
JDBC变量占位符字符吗?是的,而不是?我刚刚输入了2000,但是使用OraclePreparedStatement从TASK t中获取了SELECT count(*),其中t.TASK_ID=?作为我打印字符串后的输出,只是为了确认-如果您直接在Oracle中运行上述SQL,是否会得到错误或有效的结果集?来自任务,因为t
在Oracle上不起作用。Oracle不允许表别名使用as
关键字。例如,select*from dual-as-d
给出了ORA-00933:SQL命令未正确结束
select*from dual d
works。我基本上给出了sql查询的正确答案,但我现在在oracles案例中没有提到这一点,因为t在Oracle上不起作用。Oracle不允许表别名使用as
关键字。例如,select*from dual-as-d
给出了ORA-00933:SQL命令未正确结束
select*from dual d
works。对于sql查询,我基本上给出了正确的答案,但在oracles的案例中,我现在没有提到这一点