ORA-01747:java中的user.table.column、table.column或column规范无效
我得到了这个错误- ORA-01747:无效的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(
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。您是否在执行查询之前打印了查询,并确保它看起来像您认为的那样?