java - 我的java程序中的一行SQL出现问题

标签 java sql

所以该程序是连接到 .mdb 文件作为我们的数据库。我已将所有其他代码写入该程序,并且知道它工作正常,但我现在在将复杂的 SQL 语句作为参数传递给 createQuery(Sring, int) 方法时遇到问题。

有两个表 人员,包含姓名、ID、城市、州 类(class),包含 ID、类(class)、成绩

该行的预期目的是从人员表中打印“姓名和 ID”,并从类(class)表中打印“类(class)和成绩”。该查询仅打印特定类(class)(“CSC 225”)中具有匹配 ID(Person.Id = Classes.Id)且成绩 > 70 的条目。

我们从未深入学习过 SQL 语句,因此我的基本理解编写了以下代码行。

String s = "SELECT " + personTableTitle + ".Name, " + personTableTitle + ".Id, " + 
                            classesTableTitle + ".Course, " + classesTableTitle + ".Grade FROM " +
                            personTableTitle + " " + classesTableTitle + " WHERE " +
                            personTableTitle + ".ID = " + classesTableTitle + ".Id AND " +
                            "Course = 'CIS 225' AND " + classesTableTitle + ".Grade > 70 AND " +
                            personTableTitle + ".Id = ? AND " + classesTableTitle + ".Id = ?";

System.out.print(s);   // Double check of my SQL Statement before passing

db.createQuery(s, 4);

我从周三晚上开始就一直在玩这个 SQL 语句,但运气不太好。

最佳答案

我只看到两个问题。 Sql 需要在 FROM 子句中的表名之间使用逗号,即 ...FROM table1, table2 WHERE...。所以将你的行更改为

             personTableTitle + ", " + classesTableTitle + " WHERE " +

下一个可能不是问题,但最好在每个字段引用前面包含表名称。

             classesTableTitle + ".Course = 'CIS 225' AND " + classesTableTitle + ".Grade > 70 AND " +

关于java - 我的java程序中的一行SQL出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17756110/

相关文章:

Java:将包含文件和目录的目录移动到新路径

java - 为什么setContextClassLoader()方法放在Thread上?

sql - 我想并行运行两个或多个程序

sql - 删除速度很慢

java - IntelliJ - 如何运行 main() - 运行总是引用测试文件夹

java - 尝试插入扩展实体时出错: invalid column index

java - 递归单链表插入Before方法切断列表的其余部分

java - java.sql.Timestamp 的 javadoc 中的实现继承是什么意思?

php - mysql 服务器不接受 id 和 datetime 作为新记录

php - 使用 php 进行读/写负载平衡 - mongodb 与 mysql