【问题标题】:ORA 00905 missing keyword in Select statementORA 00905 在 Select 语句中缺少关键字
【发布时间】:2016-02-09 05:57:44
【问题描述】:
try {
        st = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
        st3 = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
        rs = st.executeQuery("select insp_no,ro_code, inspectiondate from keroseneheader where ro_code='" + cust_code + "' and status='NO' and inspectedby='" + em.ro_code + "'");

        if (rs.next()) 
        {
          session.setAttribute("insp_no", rs.getString("insp_no"));
          out.print(rs.getString("insp_no") + "#" + rs.getString("inspectiondate"));
        } 
        else
        {
          rs3 = st3.executeQuery("select * from keroseneheader where ro_code='" + cust_code + "' and inspectiondate>to_date('" + inspectdate + "','dd-mm-yyyy') and inspectedby='" + em.ro_code + "'");

          if (!rs3.next()) 
          {
            String query2 = "insert into keroseneheader(insp_no,ro_code,inspectiondate,status,inspectedby) values((select nvl(max(INSP_NO)+1,1) from keroseneheader),'" + cust_code + "',"
        + "to_date('" + inspectdate + "','dd-mm-yyyy'),'NO','" + em.ro_code + "')";
            boolean i = DbConn.insertupdatedata(query2, false);

           if (i) {
                st1 = con.createStatement();
                rs1 = st1.executeQuery("select insp_no,to_char(inspectiondate,'dd-mm-yyyy') inspectiondate from keroseneheader where ro_code=" + cust_code + " and status='NO' and inspectedby='" + em.ro_code + "'");

             if (rs1.next()) {
        session.setAttribute("insp_no", rs1.getString("insp_no"));
        out.print(rs1.getString("insp_no") + "#" + rs.getString("inspectiondate"));
                }
             }
        } 
        else {
        out.print("Invalid Date");
        }
       }

【问题讨论】:

  • 提出问题的所有细节。解释你做了什么。你看网上的错误了吗?
  • 抱歉代码不是很清楚我是新来的堆栈溢出所以不太了解这个
  • 在你的select语句中可以看到em.ro_codeem是什么?也尽量使用参数化查询来避免sql注入pblm
  • em 是员工EmployeeDetails的对象 em = (EmployeeDetails) session.getAttribute("Employee");

标签: sql keyword


【解决方案1】:

改变这一行

st1.executeQuery("select insp_no,to_char(inspectiondate,'dd-mm-yyyy') inspectiondate from keroseneheader

到这里

st1.executeQuery("select insp_no,to_char(inspectiondate,'dd-mm-yyyy') as 'inspectiondate' from keroseneheader

【讨论】:

  • 第一个 st.executequery() 中是否有任何错误; sql语句
  • @Gourav 如果你调试你的代码,你能告诉我们它在哪里遇到异常吗?
  • 这只是我项目的一部分,在项目中我有一个搜索框,当我提供输入并尝试搜索时出现错误 MISSING KEYWORD
  • 另外 apache tomcat 日志不告诉错误行号或其他任何东西,只是出现一个名为缺少关键字的错误和一些错误行
  • java.sql.SQLSyntaxErrorException: ORA-00905: oracle.jdbc.driver.SQLStateMapping.newSQLException(SQLStateMapping.java:91) at oracle.jdbc.driver.DatabaseError.newSQLException(DatabaseError. java:133)
猜你喜欢
  • 2020-08-14
  • 1970-01-01
  • 1970-01-01
  • 2012-09-16
  • 1970-01-01
  • 2012-07-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多