gpt4 book ai didi

java - ORA-01747 : invalid user. table.column、table.column 或 java 中的列规范

转载 作者:行者123 更新时间:2023-11-28 23:30:17 24 4
gpt4 key购买 nike

我收到这个错误-ORA-01747: 无效的 user.table.column、table.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 中执行此查询时(UPDATE STUDENT SET CURRENT_DATE='27TH MAY',SUBJECT='CRYPTOGRAPHY',ATTENDANCE='ABSENT' 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..

所以你有两个问题:

  1. 如果rdbtnPresent.isSelected()返回true,这里有个逗号,跟这里无关
  2. WHERE 前没有空格

注意: 考虑使用 PrepareStatement 来避免此类问题,避免必须转义您的值并避免 SQL 注入(inject)攻击。

关于java - ORA-01747 : invalid user. table.column、table.column 或 java 中的列规范,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37552692/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com