尝试在netbeans中捕获麻烦

时间:2014-01-27 12:34:17

标签: if-statement netbeans hashmap try-catch

我正在尝试创建一个从我的SQL数据库中获取信息的搜索引擎。现在我正在努力使组合框和文本字段工作。到目前为止,我只能使代码的第一部分工作,它允许用户在数据库中搜索名称。然而其余部分根本不起作用,导致只是一个空窗口,其中会弹出信息。

以下是代码中出现的瑞典语单词的一些翻译:

Namn - 姓名

sokt - 搜索

ANSTALLD - 员工

援助 - 员工ID

电话 - 电话

try
{

if(jComboBoxSokAID.getSelectedItem().equals("Namn"))
{
    String namn = jTextFieldSokText.getText();
    String namnQuery = "select * from ANSTALLD where namn = '" + namn + "'";
    try
    {
        HashMap <String, String> soktNamn = idb.fetchRow(namnQuery);
        jTextAreaSpecialistInfo.setText("Namn: " + soktNamn.get("namn") + "\n" + "Aid: " + soktNamn.get ("aid") + "\n" + "Telefon: " + soktNamn.get ("telefon") + "\n" + "Mail: " + soktNamn.get ("mail"));
        if(jComboBoxSokAID.getSelectedItem().equals("Mail"))
        {
        String mail = jTextFieldSokText.getText();
        String mailQuery = "select * from ANSTALLD where mail = '" + mail + "'";
        try
        {
            HashMap <String, String> soktMail = idb.fetchRow(mailQuery);
            jTextAreaSpecialistInfo.setText("Namn: " + soktMail.get("namn") + "\n" + "Aid: " + soktMail.get ("aid") + "\n" + "Telefon: " + soktMail.get ("telefon") + "\n" + "Mail: " + soktMail.get ("mail"));

            if(jComboBoxSokAID.getSelectedItem().equals("Telefon"))
            {    
            String telefon = jTextFieldSokText.getText();
            String telefonQuery = "select * from ANSTALLD where telefon = '" + telefon + "'";
            try
            {
                HashMap <String, String> soktTelefon = idb.fetchRow(telefonQuery);
                jTextAreaSpecialistInfo.setText("Namn: " + soktTelefon.get("namn") + "\n" + "Aid: " + soktTelefon.get ("aid") + "\n" + "Telefon: " + soktTelefon.get ("telefon") + "\n" + "Mail: " + soktTelefon.get ("mail"));

                if(jComboBoxSokAID.getSelectedItem().equals("AID"))
                {    
                String AID = jTextFieldSokText.getText();
                String AIDQuery = "select * from ANSTALLD where aid = '" + AID + "'";
                try
                {
                HashMap <String, String> soktAID = idb.fetchRow(AIDQuery);           
                jTextAreaSpecialistInfo.setText("Namn: " + soktAID.get("namn") + "\n" + "Aid: " + soktAID.get ("aid") + "\n" + "Telefon: " + soktAID.get ("telefon") + "\n" + "Mail: " + soktAID.get ("mail"));

                }

                catch (InformatikException e)
                {
                    if(jComboBoxSokAID == null)
                    jTextAreaSpecialistInfo.setText("Sökningen gav inga resultat");
                }

                }

            }

            catch (InformatikException e)
            {

            }

            }


        }
            catch (InformatikException e)
            {

            }
        }

    }
    catch (InformatikException e)
    {

    }

1 个答案:

答案 0 :(得分:0)

不要以这种方式编写代码。

永远不要有空的挡块。

我更喜欢在方法中使用单个try / catch。以这种方式嵌套它们表明你应该重构一个做得太多的方法。

您以尽可能最糟糕的方式将持久性和UI代码混合在一起。将它们拆开,以便您可以单独测试和使用它们。

您不会关闭任何数据库资源。这会让人感到悲伤。