我是DATABASE和MYSQL的新手,因此在处理查询方面没有太多经验或知识
我在MYSQL数据库中有两个表students
和login
,它们都有1:1的关系,学生的主键是登录中的外键。
因此登录表同时包含Student_ID
(FK)和Password
我想在JAVA程序中运行一个查询,该程序将检查用户在id
表中输入的password
和login
,然后返回匹配的student
对象来自学生表的数据
到目前为止,这是我为登录用户username
和password
public Student validate_Student(String s, String t)
{
int w = Integer.parseInt(s);
int q = 0;
String iD = "";
Student obj = new Student();
String query = "SELECT * FROM login WHERE Student_ID = " + w + " and Password= " + t;
try
{
ResultSet rs = stmt.executeQuery(query);
while (rs.next()) {
iD = rs.getString("Student_ID"); //matching record
}
int i = Integer.parseInt(iD); // check the previously searched matching record in student table
String query1 = "SELECT * FROM student WHERE ID = " + i;
ResultSet rs1 = stmt.executeQuery(query);
while (rs1.next()) {
obj.setID(rs1.getString("ID"));
obj.setName(rs1.getString("NAME"));
obj.setAddress(rs1.getString("ADDRESS"));
obj.setPhone(rs1.getString("PHONE_NO"));
obj.setEmail(rs1.getString("EMAIL"));
obj.setDOB(rs1.getString("DOB"));
obj.setDegree(rs1.getString("DEGREE"));
}
}
catch(SQLException e)
{
System.out.println("Problem in Query");
e.printStackTrace();
}
return obj;
}
我不太确定如何在查询中使用UNIONS
答案 0 :(得分:0)
以下查询将返回登录凭据匹配的学生详细信息。
SELECT s.* FROM student s JOIN login l on s.id = l.Student_ID WHERE l.Student_ID = " + w + " and l.Password= '" + t + "'";
使用一对一关系s.id = l.Student_ID
将学生表加入登录表,其中s
是学生表的别名,l
是登录表。
仅返回学生详细信息,请在select语句中使用s.*
。