Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 验证数据库中的函数_Java_Database_List - Fatal编程技术网

Java 验证数据库中的函数

Java 验证数据库中的函数,java,database,list,Java,Database,List,我不知道如何验证这一点,如果找不到id值,我可以说id值不存在。我有一个带有数据库的GUI功能,在其中输入某人的id(属性),它会返回他们的其他信息(姓名等),但当找不到id时,我的程序会崩溃,我不太确定如何确保在找不到id时,我可以使用JOption窗格 int id = Integer.parseInt(jTextField15.getText()); Person updatePerson = new Person(); for (Person person : p

我不知道如何验证这一点,如果找不到id值,我可以说id值不存在。我有一个带有数据库的GUI功能,在其中输入某人的id(属性),它会返回他们的其他信息(姓名等),但当找不到id时,我的程序会崩溃,我不太确定如何确保在找不到id时,我可以使用JOption窗格

    int id = Integer.parseInt(jTextField15.getText());
    Person updatePerson = new Person();
    for (Person person : personList)
    {
        if (person.getPersonid() == id)
        {
            updatePerson = person;
        }

        }

    jTextField11.setText(updatePerson.getFirstname());
    jTextField17.setText(updatePerson.getSurname());
    jTextField12.setText(updatePerson.getPersontype());
    jTextField16.setText(updatePerson.getGender());
    jSpinner5.setValue(updatePerson.getDateofbirth());
程序似乎正常工作,但在找不到id后,线程消息中出现异常:

线程“AWT-EventQueue-0”java.lang.IllegalArgumentException中的异常:非法值


如果您能帮助解释这是什么、如何修复以及能够向用户打印消息,我们将不胜感激。

我想您的意思是: 当我查找一个元素而没有找到它时,我应该在GUI中做什么

您可以采取两种方法:

1:去掉元素。这对html和其他生成的用户界面很有效(通常)。循环之后,检查updatePerson==null,如果是,则跳过生成html元素(或文本字段等)

2:对于GUI,通常使用默认值。这可以通过以下两种方式之一完成:为每个字段使用默认值,或者创建虚拟对象

int id = Integer.parseInt(jTextField15.getText());
Person updatePerson = null;
for (Person person : personList)
{
    if (person.getPersonid() == id)
    {
        updatePerson = person;
        break; // with break: get first found, without break: get last found. 
        // this depends on whether it is possible to have a person show up more than once.
    }
}

if (person == null) {
    jTextField11.setText("");
    jTextField11.setVisible(false); // setting fields to empty, in case logic 
    jTextField17.setText("");       // is using them or if someone
    jTextField17.setVisible(false); // sets visible true before setting text
    jTextField12.setText("");       // as you don't want to output wrong data
    jTextField12.setVisible(false); // even for a flicker of a second
    jTextField16.setText(""); 
    jTextField16.setVisible(false); 
    jSpinner5.setValue(SOME_GLOBAL_DEFAULT_DATE);     // ie. 0 or 1970-01-01 
    jSpinner5.setVisible(false); 
} else {
    jTextField11.setText(updatePerson.getFirstname());
    jTextField17.setText(updatePerson.getSurname());
    jTextField12.setText(updatePerson.getPersontype());
    jTextField16.setText(updatePerson.getGender());
    jSpinner5.setValue(updatePerson.getDateofbirth());
}
或者您可以这样做(保留字段,但为空)

在写这篇文章时,我意识到我最终会采用与第一种方法相关的第三种方法:

if (updatePerson == null) {
    panelContainingFields.setVisible(false);
} else {
    jTextField11.setText(updatePerson.getFirstname());
    jTextField17.setText(updatePerson.getSurname());
    jTextField12.setText(updatePerson.getPersontype());
    jTextField16.setText(updatePerson.getGender());
    jSpinner5.setValue(updatePerson.getDateofbirth());
    panelContainingFields.setVisible(true);
}

只需将您使用的所有字段放在面板中,并在没有元素时隐藏面板。

到底是什么问题?在循环之后测试updatePerson是否为null如何?当发现此人时,您可能还想
中断
。使用break似乎可以工作,但之后我的程序崩溃了,非常感谢。这是我必须为我的项目做的最后一部分,即使它工作正常,它仍然会在底部给我一条错误消息,以及我如何使用JOptionPane声明id号不存在。我强烈要求您在提交之前理解您编写的全部代码。在每个块上添加注释行,说明每个部分的功能。这将帮助您跟踪代码。我不认为optionpane本身能做到这一点。但是你可以根据你是否找到一个人来选择显示哪个选项窗格。我只是有点困惑。我现在正在评论我的程序。谢谢你的帮助
if (updatePerson == null) {
    panelContainingFields.setVisible(false);
} else {
    jTextField11.setText(updatePerson.getFirstname());
    jTextField17.setText(updatePerson.getSurname());
    jTextField12.setText(updatePerson.getPersontype());
    jTextField16.setText(updatePerson.getGender());
    jSpinner5.setValue(updatePerson.getDateofbirth());
    panelContainingFields.setVisible(true);
}