Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ORA-01747:java中的user.table.column、table.column或column规范无效_Java_Mysql_Oracle11g_Syntax Error - Fatal编程技术网

ORA-01747:java中的user.table.column、table.column或column规范无效

ORA-01747:java中的user.table.column、table.column或column规范无效,java,mysql,oracle11g,syntax-error,Java,Mysql,Oracle11g,Syntax Error,我得到了这个错误- ORA-01747:无效的user.table.column、table.column或column规范 这是我的代码块- private void updateAttendance(){ MyQuery mq=new MyQuery(); Connection con=mq.getConnection(); Statement st; ResultSet rs; try{ st=con.createStatement(

我得到了这个错误- ORA-01747:无效的user.table.column、table.column或column规范

这是我的代码块-

private void updateAttendance(){
    MyQuery mq=new MyQuery();
    Connection con=mq.getConnection();
    Statement st;
    ResultSet rs;
    try{
        st=con.createStatement();
        rs=st.executeQuery("Select STU_ID FROM STUDENT WHERE NAME='"+cmbName.getSelectedItem()+"'");
        if(rs.next()){
            //System.out.println("getting student name");
            int id=rs.getInt("STU_ID");
            System.out.println(id);
            String sql="UPDATE STUDENT SET CURRENT_DATE='"+lblTime.getText()+"',SUBJECT='"+cmbSub.getSelectedItem()+"',ATTENDANCE=";

            if(rdbtnPresent.isSelected())
                sql+= "'"+Atdnc[0]+"',";
            else
                sql+= "'"+Atdnc[1]+"'";

            sql+="WHERE STU_ID='"+id+"'";
          st.executeUpdate(sql);
            //cmbName.removeAllItems();
        }

    }catch(SQLException ex){
        Logger.getLogger(Student.class.getName()).log(Level.SEVERE, null, ex);
    }

}

当我在oracle 11g中执行此查询(更新学生集CURRENT_DATE='27 MAY',SUBJECT='CRYPTOGRAPHY',Attention='缺席'WHERE STU_ID='40';)时,它工作正常……但eclipse中的相同sql返回错误。

您的问题应该在这里:

if (rdbtnPresent.isSelected())
    sql+= "'"+Atdnc[0]+"',"; // --> this should be "'" as there is no more field
else
    sql+= "'"+Atdnc[1]+"'";
sql+="WHERE STU_ID='"+id+"'"; // --> this should start with a space sql+=" WHERE..
因此,您有两个问题:

  • 如果
    rdbtnPresent.isSelected()
    返回
    true
    ,则这里有一个逗号与此无关
  • 您的
    WHERE

  • <代码> NB:<代码>考虑使用<代码> PravaReals>代码>,以避免此类问题,避免逃避值,避免SQL注入攻击。

    <代码>模式<代码>,表<代码>学生<代码>是否存在?假设是学校,尝试运行:
    Select STU ID FROM school.STUDENT WHERE…
    我认为问题出在UPDATE query中,因为Select语句正确地给出了结果。我指的是ID。您是否在执行查询之前打印了查询,并确保它看起来像您认为的那样?