首页 > 解决方案 > 是否可以使用java比较数据库表记录的值?

问题描述

我是编程新手,我正在尝试编写一个可以解决以下问题的 java 程序:

有100名学生和100本书。这些书籍分为四个类别(人工智能、机器学习、深度学习和物联网),每个类别有 25 本书。我们不能给每个学生需要的书,让学生根据类别选择书。然后程序通过考虑学生成绩的选择顺序和gpa,从该类别中为每个学生分配一本书。学生将通过 GPA 进行比较,以便系统根据比较分配第 1 选择、第 2 选择、....、第 4 选择。一个学生只有一本书。我尝试如下。

PreparedStatement ps = null;
String query_s = "SELECT choice1,choice2, choice3, choice4, GPA FROM 
Students_table ";
ResultSet rs = stmt.executeQuery(query_s);
while (rs.next()) {
  double gpa = rs.getDouble("GPA");
  String choice1 = rs.getString("choice1");
  String choice2 = rs.getString("choice2");
  String choice3 = rs.getString("choice3");
  String choice4 = rs.getString("choice4");
  if (gpa > 3.5) {
    ps = conn.prepareStatement("UPDATE Students_table SET Book =" + choice1 + " ");
    ps.execute();
  }
  if (gpa < 3.5 && gpa > 3) {
    ps = conn.prepareStatement("UPDATE Students_table SET Book  =" + choice2 + "");
    ps.execute();
  }
  if (gpa < 3 && gpa > 2.5) {
    ps = conn.prepareStatement("UPDATE Students_table SET Book =" + choice3 + "");
    ps.execute();
  } else {
    ps = conn.prepareStatement("UPDATE Students_table SET Book  =" + choice4 + "");
    ps.execute();
  }
}

它说:java.sql.SQLSyntaxErrorException:列'MACHINE_LEARING'要么不在FROM列表中的任何表中,要么出现在连接规范中并且超出连接规范的范围,或者出现在HAVING子句中并且不在GROUP中按列表。如果这是 CREATE 或 ALTER TABLE 语句,则“MACHINE_LEARING”不是目标表中的列。表“Students_table”查看此内容。 Students_table 样本

但我无法编写一种方法来比较学生使用选择顺序和 GPA 来提供他们想要的书。请帮忙!

标签: javadatabase

解决方案


使用 where 标识行并使用?以避免 SQL 注入。

PreparedStatement stmt=conn.prepareStatement("update Students_table set Book=? where Name=?");  
stmt.setString(1,"choice1"); 
stmt.setString(2,"Mark");  

推荐阅读