根据用户输入(Java)将查询发送到数据库(MySQL)

时间:2019-06-26 15:46:19

标签: java mysql

我想请教一些建议。我的情况是我有8个jTextField,用户可以在其中写入一些信息,然后基于该信息,我的程序将进入数据库(MySQL),并尝试查找表中的行或行,并进行打印(显示它)给正在使用我的程序的用户。我不知道是否可能,但是对于每种不同的组合,用户可以填写哪些字段,我需要向数据库发送不同的查询以完成此过程。由于具有8个字段,因此组合数非常大,并且似乎不建议编写其他许多if并为每个可能的输入组合编写查询。有什么办法可以代替编写大量代码吗?

下面,我将用代码编写的那些可能组合之一。

else if (!jTextField1.getText().equals("") && jTextField2.getText().equals("") && jTextField3.getText().equals("") && jTextField4.getText().equals("") && jTextField5.getText().equals("") && jTextField6.getText().equals("") && jTextField7.getText().equals("") && jTextField8.getText().equals("")) {
                try {
                    String query = "SELECT * FROM mvap.daiktas WHERE inventorinisNr='" + jTextField1.getText() + "' && zmogusID='" + log.zmogusID2 + "'";
                    Statement st = conn.createStatement();
                    ResultSet rs = st.executeQuery(query);
                    if (rs.isBeforeFirst()) {
                        while (rs.next()) {
                            inventorinisNr = rs.getString("inventorinisNr");
                            padalinysID = rs.getInt("padalinysID");
                            String query2 = "SELECT * FROM mvap.padalinys WHERE id='" + padalinysID + "'";
                            Statement st2 = conn.createStatement();
                            ResultSet rs2 = st2.executeQuery(query2);
                            while (rs2.next()) {
                                padalinioPavadinimas = rs2.getString("pavadinimas");
                            }
                            daiktoTipas = rs.getString("daiktoTipas");
                            daiktoPavadinimas = rs.getString("daiktoPavadinimas");
                            isigijimoMetai = rs.getDate("isigijimoMetai");
                            verte = rs.getFloat("verte");
                            pastabos = rs.getString("pastabos");
                            vieta = rs.getString("vieta");
                            uzkarda = rs.getString("uzkarda");
                            eilNr++;
                            model.insertRow(model.getRowCount(), new Object[]{eilNr, inventorinisNr, padalinioPavadinimas, daiktoTipas, daiktoPavadinimas, isigijimoMetai, verte, pastabos, vieta, uzkarda});
                        }
                    }
                    else {
                        JOptionPane.showMessageDialog(null, "Pagal Jūsų pateiktą užklausą nebuvo niekas surasta!", "Paieškos klaida", JOptionPane.INFORMATION_MESSAGE);
                    }
                }
                catch (SQLException exc) {
                    System.out.println(exc);
                }
            }

0 个答案:

没有答案