gpt4 book ai didi

java - 使用 Java 和 MySQL 数据库的家谱

转载 作者:行者123 更新时间:2023-11-29 17:54:27 25 4
gpt4 key购买 nike

我使用 MySQL 数据库用 Java 创建了一个家谱程序。该程序包括用户输入姓名、父亲姓名、城市、州等详细信息。数据存储到数据库中。然后,如果我们输入任何名称,它将在数据库中搜索并返回完整的家谱。

我为其创建了一个逻辑,如果用户输入任何名称,它将搜索该名称并打印数据,然后它将用父亲的名称分配名称并在数据库中再次搜索,直到找不到记录为止。它工作正常,但是当两个成员有共同的名字时就会出现问题。如何解决这个问题,任何方法都将受到赞赏。

我附上了该程序的代码。

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;
}

最佳答案

使用 2 个表。

第一个包含用户数据:ID、姓名、出生日期、死亡日期(如果适用)、...
其中id 只是为每个用户自动生成的唯一编号。

另一个表包含“父”关系。例如,该表具有 fatherson 列。 (或者,如果您还想添加母亲和 sibling ,您可以使用列 person otherPersontype 来定义是父亲、母亲还是兄弟)。这些列的值是第一个表中特定人员的 id

然后在您的“用户界面”中查找所有具有该姓名的人,将其打印出来并让用户选择正确的人(如果适用)。您将所选人员的 id 以及新插入人员的 ID 插入到该关系表中。

关于java - 使用 Java 和 MySQL 数据库的家谱,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48991032/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com