Connection connection;
Statement statement=null;
try{
connection = DBConnection.getDBConnection().getConnection();
statement=connection.createStatement();
for (int j = 0; j < students.length; j++) {
if(students[j][0]!=null){
String sql="SELECT * from students WHERE id="+students[j][0]+" LIMIT 1";
ResultSet rs=statement.executeQuery(sql);
if(rs.next()){
String reg=rs.getString("regNo");
// if(students[j][1]==toDayDate){
float num1=Math.round(Float.valueOf(students[j][2]));
String rrr=String.valueOf(num1)+"0";
String sql1="SELECT * from reg_courses WHERE regNo="+reg+" && day="+students[j][4]+" && start="+rrr+" LIMIT 1";
ResultSet rs1=statement.executeQuery(sql1);
if(rs1.next()){
if(students[j][3]=="I"){
String sql2="UPDATE attendances SET status = '1' WHERE regNo ="+reg+"&& code="+rs1.getString("code")+"&& time="+rrr+"&& date="+students[j][1];
statement.executeUpdate(sql2);
}
else if(students[j][3]=="O"){
String sql2="UPDATE attendances SET statusA = '1',present = '1', WHERE regNo ="+reg+"&& code="+rs1.getString("code")+"&& time="+rrr+"&& date="+students[j][1]+"&& status='1'";
statement.executeUpdate(sql2);
}
}
// }
}
}
}
}
catch(Exception e){
e.printStackTrace();
}
我的数据库中有 3 个表,分别是 students、reg_courses 和 attendances。每个表都有一个列来存储索引号。regNo 是所有表的列名。当我运行它时,它说
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:“where 子句”中的未知列“SC9208”.... SC9208 是表中的索引号。这里在 sql1 中,
String sql1="SELECT * from reg_courses WHERE regNo="+reg+"&& day="+students[j][4]+"&& start="+rrr+"LIMIT 1";
regNo 被识别为一个变量。但不是列名。??知道吗。为什么? 其他部分代码没有错误,我检查了很多次,谁能指出错误的地方??
最佳答案
值需要被单引号
例如
SELECT * from reg_courses WHERE regNo='SC9208' and day=1 and start=14.00 LIMIT 1
尽管使用 PreparedStatement
和 setString
会更好
关于Java,Mysql-列名标识为变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44690505/