Java SQL命令未正确结束

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

已尝试运行运行此oracle SQL查询的java方法

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的案例中,我现在没有提到这一点