java - 是否可以使用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 来提供他们想要的书。请帮忙!
解决方案
使用 where 标识行并使用?
以避免 SQL 注入。
PreparedStatement stmt=conn.prepareStatement("update Students_table set Book=? where Name=?");
stmt.setString(1,"choice1");
stmt.setString(2,"Mark");
推荐阅读
- python - 已安装 Numpy,但未找到模块
- node.js - npm 错误!无法安装,因为它不包含 package.json 文件 angular firebase 函数
- codenameone - 代号:无法使用系统 JAXB 生成 Gui 源
- html - 在类中使用的某些背景颜色(如 #4f8a2ad4 或 #8a2a5fd4)在 div 和 img 元素中使用时具有不同的阴影
- git - git log --name-status 在重命名时显示单个文件的新名称
- javascript - 如何将道具发送到组件以响应条件?
- javascript - 如何在节点 REPL 中重新定义 const?
- git - 据说我的本地 git 在远程主机后面 - 这是一个错误还是?
- r - 默认情况下如何为 `renv` 导入已安装的包
- java - 如何打印使用 Composite 创建的整个数据结构?