您好,我正在嘗試根據 subject_id 外鍵顯示具有相應主題的學生資料,并在 GET REQUEST 上顯示結果。我不知道我需要如何重寫 SQL 命令來消除錯誤。這是錯誤:
java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'INNER JOIN subject ON student.subject_id=subject.id WHERE user_id=3' at line 1Retrieve not successful
這是我的資料庫架構:

這是我的代碼:
public ArrayList<Object> getStudentSubject(int id) throws Exception {
Connection connection = null;
ArrayList<Student> data = new ArrayList<>();
ArrayList<Subject> data2=new ArrayList<>();
ArrayList<Object> data3 = new ArrayList<>();
try {
connection = new MysqlDbConnectionService().getConnection();
String select ="SELECT student.user_id, student.username, student.password, student.fullname,student.email, subject.id,subject.name"
"FROM student INNER JOIN subject ON student.subject_id=subject.id WHERE user_id=?";
PreparedStatement ps = connection.prepareStatement(select);
ps.setInt(1, id);
ResultSet rs = ps.executeQuery();
Student model = new Student();
Subject model2 = new Subject();
while (rs.next()) {
model.setId(rs.getString("user_id"));
model.setUsername(rs.getString("username"));
model.setPassword(rs.getString("password"));
model.setFullName(rs.getString("fullname"));
model.setEmail(rs.getString("email"));
model2.setId(rs.getInt("id"));
model2.setName(rs.getString("username"));
data.add(model);
data2.add(model2);
data3.add(data);
data3.add(data2);
}
} catch (Exception e) {
System.out.println(e "Retrieve not successful");
}
return data3;
}
澤西島代碼:
@Path("subject/{id}")
@GET
public Response getStudentwithSubject(@PathParam("id") int id) throws Exception {
return Response.ok(new Gson().toJson(studentService.getStudentSubject(id))).build();
}
學生模型:
package com.common.db.domain;
import com.google.gson.annotations.SerializedName;
public class Student {
@SerializedName("id")
private String id;
@SerializedName("username")
private String username;
@SerializedName("password")
private String password;
@SerializedName("fullname")
private String fullName;
@SerializedName("email")
private String email;
public Student()
{
}
public Student(String id, String username, String password, String fullName, String email)
{
super();
this.id=id;
this.username = username;
this.password = password;
this.fullName = fullName;
this.email = email;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getFullName() {
return fullName;
}
public void setFullName(String fullName) {
this.fullName = fullName;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
主題模型:
package com.common.db.domain;
import com.google.gson.annotations.SerializedName;
public class Subject {
@SerializedName("id")
private int id;
@SerializedName("name")
private String name;
public Subject() {
this.id = id;
this.name=name;
}
public void setId(int id)
{
this.id=id;
}
public int getId()
{
return id;
}
public void setName(String name)
{
this.name=name;
}
public String getName()
{
return name;
}
}
uj5u.com熱心網友回復:
subject.name如果您觀察到and之間沒有空格,這是由于字串連接而形成的完全錯誤的 SQL FROM student。在 subject.name 之后或 FROM 之前添加空格,如下所示。
String select ="SELECT student.user_id, student.username, student.password, student.fullname,student.email, subject.id,subject.name "
" FROM student INNER JOIN subject ON student.subject_id=subject.id WHERE user_id=?";
讓我知道這是否有幫助。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/453097.html
上一篇:我是否需要將整數引數轉換為字串才能使用varchar索引?
下一篇:在SQL中查找具有條件的列的總和
