我对编程非常陌生。我正在处理一个应用程序,它有6个字段供用户输入输入,并根据输入的输入,我必须从数据库查询行。根据用户输入设置查询数据库 - JAVA
的形象和我有输入以下组合:
- A-号码
- B-号码
- A-号码,B-号码
- A-号码,开始日期/时间
- 号码,Bnumber,开始日期/时间
- B-号码,开始日期/时间
- A-号码,开始日期/时间,结束日期/时间
- B-号码,开始日期/时间,结束日期/时间
- A-号码,B-号码,开始日期/时间,结束日期/时间
用户可以按照上述所有方式输入输入。我必须根据用户输入查询数据库。
比方说,用户输入A-号码,然后我的查询将
Select * from table_name where Anumber = 'input'
如果用户输入两个aNumber的和B-号码,然后我的查询将
Select * from table_name where Anumber = 'input' AND bnumber = 'input2'
章等.. 。
我在分享一些我的代码来认识别人我究竟在做什么和什么可以做得更好。
if (TextAnumber.isEmpty() && TextBnumber.isEmpty() && StrUserStartDate.isEmpty() && StrUserStartTime.isEmpty()
&& StrUserEndDate.isEmpty() && StrUserEndTime.isEmpty()) {
JOptionPane.showMessageDialog(null, "Please Enter At Least One Input");
}
if (StrUserStartDate.isEmpty() && !StrUserStartTime.isEmpty()) {
JOptionPane.showMessageDialog(null, "Please Enter Start Date");
}
if (!StrUserStartDate.isEmpty() && StrUserStartTime.isEmpty()) {
JOptionPane.showMessageDialog(null, "Please Enter Start Time");
}
if (StrUserEndDate.isEmpty() && !StrUserEndTime.isEmpty()) {
JOptionPane.showMessageDialog(null, "Please Enter End Date");
}
if (!StrUserEndDate.isEmpty() && StrUserEndTime.isEmpty()) {
JOptionPane.showMessageDialog(null, "Please Enter End Time");
}
if (!StrUserEndDate.isEmpty() && !StrUserEndTime.isEmpty() && StrUserStartDate.isEmpty()
&& StrUserStartTime.isEmpty()) {
JOptionPane.showMessageDialog(null, "Please Enter Start Date/Time");
}
if (!TextAnumber.isEmpty() && TextBnumber.isEmpty() && StrUserStartDate.isEmpty() && StrUserEndDate.isEmpty()) {
ResultSet rs = stmt.executeQuery(
"select anumber,bnumber FROM CDR WHERE ANUMBER = '" + TextAnumber + "' ORDER BY ANUMBER");
while (rs.next()) {
graphNodeA = rs.getString("ANUMBER");
graphNodeB = rs.getString("BNUMBER");
graph.addNode(graphNodeA);
graph.addNode(graphNodeB);
i++;
graph.addEdge("string" + i, graphNodeA, graphNodeB);
}
}
if (TextAnumber.isEmpty() && !TextBnumber.isEmpty() && StrUserStartDate.isEmpty() && StrUserEndDate.isEmpty()) {
ResultSet rs = stmt.executeQuery(
"select anumber,bnumber FROM CDR WHERE ANUMBER = '" + TextBnumber + "' ORDER BY BNUMBER");
while (rs.next()) {
graphNodeA = rs.getString("BNUMBER");
graphNodeB = rs.getString("ANUMBER");
graph.addNode(graphNodeA);
graph.addNode(graphNodeB);
i++;
graph.addEdge("string" + i, graphNodeA, graphNodeB);
}
}
if (!TextAnumber.isEmpty() && !TextBnumber.isEmpty() && StrUserStartDate.isEmpty()
&& StrUserEndDate.isEmpty()) {
ResultSet rs = stmt.executeQuery("select anumber,bnumber FROM CDR WHERE ANUMBER = '" + TextAnumber
+ "' AND BNUMBER = '" + TextBnumber + "' ORDER BY ANUMBER");
while (rs.next()) {
graphNodeA = rs.getString("ANUMBER");
graphNodeB = rs.getString("BNUMBER");
graph.addNode(graphNodeA);
graph.addNode(graphNodeB);
i++;
graph.addEdge("string" + i, graphNodeA, graphNodeB);
}
}
对于这一点,我使用If/Else
这在我看来很复杂,也代码看起来很粗糙。
我在这里想要的是,如果这种问题有更好的解决方案吗? 我希望我在这里清除我的问题:)
有什么问题吗?这可能更适合[Code Review](https://codereview.stackexchange.com/)。 – DCON