我使用MySQL数据库在Java中创建了一个Family树程序。该程序包括用户将输入名称,父亲姓名,城市,州等详细信息。数据存储在数据库中。然后,如果我们输入任何名称,它将在数据库中搜索并返回完整的族谱。
我为它创建了一个逻辑,如果用户输入任何名称,它将搜索名称并打印数据,然后它将使用父名称分配名称并再次在数据库中搜索,直到找不到记录。它工作正常,但是当有两个成员的共同名称时会出现问题。如何解决这个问题,任何方法都将受到赞赏。
我附上了该程序的代码。
private void btnSearchActionPerformed(java.awt.event.ActionEvent evt) {
txtDisplay.setText("");
str="";
boolean b = false;
name = txtName.getText();
b = hasParent(name);
if(b==true)
getData();
else
JOptionPane.showMessageDialog(this, "No Records");
b = hasParent(name);
while(hasParent(name))
{
getData();
}
txtDisplay.setText(str);
}
public boolean hasParent(String name)
{
boolean b = false;
b = DBManager.searchParent(name);
return b;
}
public void getData(){
Family f = new Family();
f = DBManager.getFamily(name);
str = str+"Name: "+f.getName()+"\t|| "+"Father's Name: "+f.getFatherName()+"\n\n";
name = f.getFatherName();
}
数据库访问方法:
public static boolean searchParent(String name){
boolean flag = false;
int count=0;
try(Connection con = DriverManager.getConnection(DBURL, DBUSER, DBPASSWORD);){
PreparedStatement st = con.prepareStatement("select name from Family where Name=?");
System.out.println(name);
st.setString(1,name);
ResultSet rs = st.executeQuery();
if(rs.next()){
flag =true;
}
rs.close();
st.close();
}catch(Exception e){
}
return flag;
}