我想请教一些建议。我的情况是我有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);
}
}