Java,Mysql-列名标识为变量

标签 java mysql database variables scope

 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

尽管使用 PreparedStatementsetString 会更好

关于Java,Mysql-列名标识为变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44690505/

相关文章:

php - 通过 PHP 插入/更新 MySQL 表,行将更新但不会插入。

mysql - 第一次运行查询花费很长时间

database - UnixNano 与服务器 ID 串联是一个好的主键吗?

sql-server - 一名投球手不能在板球比赛中连续投两球

java - 在任务栏中的 PopupMenu 中添加垂直分隔符

java - 重新绘制 JComponent 的正确方法

java - Java 中的 Drupal 风格 base64 编码

php - Google finance API - 无法获取货币汇率

javascript - JQuery 获取仅带有 # 的链接

java - Java 游戏中的角色没有响应