【发布时间】:2016-05-19 16:32:35
【问题描述】:
我是编程初学者,所以如果可能的话,请帮助我! 我正在做一个程序,它根据用户选择搜索的内容选择数据库(MySQL)。 Programm 有 4 个不同的东西要搜索:Artigo、Cliente、Vendor 和具有 2 个 jDateChoosers 的数据(它将在第一个日期和第二个日期之间进行查询)。 所以我需要 16 个 if 条件来捕捉所有可能的组合。
这是我关于一个事件的代码,jTextFieldClienteKeyReleased,考虑到代码在所有其他 TextFieldsKeyReleaseds 和 jDateChoosersMouseClicked 中重复相同。
private void jTextFieldPorVendedorKeyReleased(java.awt.event.KeyEvent evt) {
// TODO add your handling code here
// Se artigo, cliente, vendedor e data forem pesquisados fazer a seguinte consulta SQL
SimpleDateFormat sd1 = new SimpleDateFormat("yyyy-MM-dd");
String DataInicial1 = sd1.format(jDateChooserInicial.getDate());
SimpleDateFormat sd2 = new SimpleDateFormat("yyyy-MM-dd");
String DataFinal1 = sd2.format(jDateChooserFinal.getDate());
if(!(jTextFieldPorArtigo.getText().isEmpty()) && (!(jTextFieldPorCliente.getText().isEmpty())) && (!(jTextFieldPorVendedor.getText().isEmpty())) && (!(jDateChooserInicial.getDate().toString().isEmpty())) && (!(jDateChooserFinal.getDate().toString().isEmpty()))) {
try {
PreparedStatement preparedStatement; //1 SELECT * FROM fatura WHERE CodArt LIKE '%AES%' AND CodCli = 1 AND CodVendedor = 1 AND Data >= '2015/03/25' AND Data <= '2017/02/27'
preparedStatement = ligacao.prepareStatement("SELECT * FROM fatura WHERE CodArt LIKE '%"
+ jTextFieldPorArtigo.getText()
+ "%' AND "
+ " CodCli = "
+ jTextFieldPorCliente.getText()
+ " AND "
+ "CodVendedor = "
+ jTextFieldPorVendedor.getText()
+ " AND "
+ "Data >= '"
+ DataInicial1
+ "' AND "
+ " Data <= '"
+ DataFinal1
+ "'");
System.out.println(preparedStatement);
ResultSet resultSetForFullTable = preparedStatement.executeQuery();
jTableVendas.setModel(DbUtils.resultSetToTableModel(resultSetForFullTable));
} catch (SQLException ex) {
System.out.println(ex);
}
//Se artigo, cliente e vendedor estiverem a ser pesquisados fazer a seguinte consulta SQL
}
SimpleDateFormat sd3 = new SimpleDateFormat("yyyy-MM-dd");
String DataInicial2 = sd3.format(jDateChooserInicial.getDate());
SimpleDateFormat sd4 = new SimpleDateFormat("yyyy-MM-dd");
String DataFinal2 = sd4.format(jDateChooserFinal.getDate());
if(!(jTextFieldPorArtigo.getText().isEmpty()) && (!(jTextFieldPorCliente.getText().isEmpty())) && (!(jTextFieldPorVendedor.getText().isEmpty())) && (jDateChooserInicial.getDate().toString().isEmpty()) && (jDateChooserFinal.getDate().toString().isEmpty()) || ((DataInicial2 == null )) || ((DataFinal2 == null ))) /*|| (jDateChooserInicial.getDateFormatString().contains("yyyy-MM-dd")) || (jDateChooserFinal.getDateFormatString().contains("yyyy-MM-dd")))*/ {
try {
PreparedStatement preparedStatement; //2 SELECT * FROM fatura WHERE CodArt LIKE '%39%' AND CodCli = 1 AND CodVendedor = 1
preparedStatement = ligacao.prepareStatement("SELECT * FROM fatura WHERE CodArt LIKE '%"
+ jTextFieldPorArtigo.getText()
+ "%' AND "
+ "CodCli = "
+ jTextFieldPorCliente.getText()
+ " AND "
+ "CodVendedor = "
+ jTextFieldPorVendedor.getText()
+ "");
System.out.println(preparedStatement);
ResultSet resultSetForFullTable = preparedStatement.executeQuery();
jTableVendas.setModel(DbUtils.resultSetToTableModel(resultSetForFullTable));
} catch (SQLException ex) {
System.out.println(ex);
}
// Se artigo, cliente e data estiverem a ser pesquisados fazer a seguinte consulta SQL
}
SimpleDateFormat sd5 = new SimpleDateFormat("yyyy-MM-dd");
String DataInicial3 = sd5.format(jDateChooserInicial.getDate());
SimpleDateFormat sd6 = new SimpleDateFormat("yyyy-MM-dd");
String DataFinal3 = sd6.format(jDateChooserFinal.getDate());
if(!(jTextFieldPorArtigo.getText().isEmpty()) && (!(jTextFieldPorCliente.getText().isEmpty())) && ((jTextFieldPorVendedor.getText().isEmpty())) && (!(jDateChooserInicial.getDate().toString().isEmpty())) && (!(jDateChooserFinal.getDate().toString().isEmpty()))) {
try {
PreparedStatement preparedStatement; //3 SELECT * FROM fatura WHERE CodArt = 2 AND CodCli = 1 AND Data >= '2015/03/25' AND Data <= '2017/02/27'
preparedStatement = ligacao.prepareStatement("SELECT * FROM fatura WHERE CodArt LIKE '%"
+ jTextFieldPorArtigo.getText()
+ "%' AND "
+ " CodCli = "
+ jTextFieldPorCliente.getText()
+ " AND "
+ " Data >= '"
+ DataInicial3
+ "' AND "
+ " Data <= '"
+ DataFinal3
+ "'");
System.out.println(preparedStatement);
ResultSet resultSetForFullTable = preparedStatement.executeQuery();
jTableVendas.setModel(DbUtils.resultSetToTableModel(resultSetForFullTable));
} catch (SQLException ex) {
System.out.println(ex);
}
// Se artigo e cliente estiverem a ser pesquisados fazer a seguinte consulta SQL
}
SimpleDateFormat sd7 = new SimpleDateFormat("yyyy-MM-dd");
String DataInicial4 = sd7.format(jDateChooserInicial.getDate());
SimpleDateFormat sd8 = new SimpleDateFormat("yyyy-MM-dd");
String DataFinal4 = sd8.format(jDateChooserFinal.getDate());
if(!(jTextFieldPorArtigo.getText().isEmpty()) && (!(jTextFieldPorCliente.getText().isEmpty())) && ((jTextFieldPorVendedor.getText().isEmpty())) && (jDateChooserInicial.getDate().toString().isEmpty()) && (jDateChooserFinal.getDate().toString().isEmpty()) || ((DataInicial4 == null )) || ((DataFinal4 == null ))) {
try {
PreparedStatement preparedStatement; //4 SELECT * FROM fatura WHERE CodArt = 1 AND CodCli = 1
preparedStatement = ligacao.prepareStatement("SELECT * FROM fatura WHERE CodArt LIKE '%"
+ jTextFieldPorArtigo.getText()
+ "%' AND "
+ " CodCli = "
+ jTextFieldPorCliente.getText()
+ "");
System.out.println(preparedStatement);
ResultSet resultSetForFullTable = preparedStatement.executeQuery();
jTableVendas.setModel(DbUtils.resultSetToTableModel(resultSetForFullTable));
} catch (SQLException ex) {
System.out.println(ex);
}
// Se artigo, vendedor e data estiverem a ser pesquisados fazer a seguinte consulta SQL
}
SimpleDateFormat sd9 = new SimpleDateFormat("yyyy-MM-dd");
String DataInicial5 = sd9.format(jDateChooserInicial.getDate());
SimpleDateFormat sd10 = new SimpleDateFormat("yyyy-MM-dd");
String DataFinal5 = sd10.format(jDateChooserFinal.getDate());
if(!(jTextFieldPorArtigo.getText().isEmpty()) && ((jTextFieldPorCliente.getText().isEmpty())) && (!(jTextFieldPorVendedor.getText().isEmpty())) && (!(jDateChooserInicial.getDate().toString().isEmpty())) && (!(jDateChooserFinal.getDate().toString().isEmpty()))) {
try {
PreparedStatement preparedStatement; //5 SELECT * FROM fatura WHERE CodArt = 2 AND CodVendedor = 1 AND Data >= '2015/03/25' AND Data <= '2017/02/27'
preparedStatement = ligacao.prepareStatement("SELECT * FROM fatura WHERE CodArt LIKE '%"
+ jTextFieldPorArtigo.getText()
+ "%' AND "
+ " CodVendedor = "
+ jTextFieldPorVendedor.getText()
+ " AND "
+ " Data >= '"
+ DataInicial5
+ "' AND "
+ " Data <= '"
+ DataFinal5
+ "'");
System.out.println(preparedStatement);
ResultSet resultSetForFullTable = preparedStatement.executeQuery();
jTableVendas.setModel(DbUtils.resultSetToTableModel(resultSetForFullTable));
} catch (SQLException ex) {
System.out.println(ex);
}
// Se artigo e vendedor estiverem a ser pesquisados fazer a seguinte consulta SQL
}
SimpleDateFormat sd11 = new SimpleDateFormat("yyyy-MM-dd");
String DataInicial6 = sd11.format(jDateChooserInicial.getDate());
SimpleDateFormat sd12 = new SimpleDateFormat("yyyy-MM-dd");
String DataFinal6 = sd12.format(jDateChooserFinal.getDate());
if(!(jTextFieldPorArtigo.getText().isEmpty()) && ((jTextFieldPorCliente.getText().isEmpty())) && (!(jTextFieldPorVendedor.getText().isEmpty())) && (jDateChooserInicial.getDate().toString().isEmpty()) && (jDateChooserFinal.getDate().toString().isEmpty()) || ((DataInicial6 == null )) || ((DataFinal6 == null ))){
try {
PreparedStatement preparedStatement; //6 SELECT * FROM fatura WHERE CodArt = 1 AND CodVendedor = 2
preparedStatement = ligacao.prepareStatement("SELECT * FROM fatura WHERE CodArt LIKE '%"
+ jTextFieldPorArtigo.getText()
+ "%' AND "
+ " CodVendedor = "
+ jTextFieldPorVendedor.getText()
+ "");
System.out.println(preparedStatement);
ResultSet resultSetForFullTable = preparedStatement.executeQuery();
jTableVendas.setModel(DbUtils.resultSetToTableModel(resultSetForFullTable));
} catch (SQLException ex) {
System.out.println(ex);
}
// Se artigo e data estiverem a ser pesquisados fazer a seguinte consulta SQL
}
SimpleDateFormat sd13 = new SimpleDateFormat("yyyy-MM-dd");
String DataInicial7 = sd13.format(jDateChooserInicial.getDate());
SimpleDateFormat sd14 = new SimpleDateFormat("yyyy-MM-dd");
String DataFinal7 = sd14.format(jDateChooserFinal.getDate());
if(!(jTextFieldPorArtigo.getText().isEmpty()) && ((jTextFieldPorCliente.getText().isEmpty())) && ((jTextFieldPorVendedor.getText().isEmpty())) && (!(jDateChooserInicial.getDate().toString().isEmpty())) && (!(jDateChooserFinal.getDate().toString().isEmpty()))){
try {
PreparedStatement preparedStatement; //7 SELECT * FROM fatura WHERE CodArt = 2 AND Data >= '2015/03/25' AND Data <= '2017/02/27'
preparedStatement = ligacao.prepareStatement("SELECT * FROM fatura WHERE CodArt LIKE '%"
+ jTextFieldPorArtigo.getText()
+ "%' AND "
+ " Data >= '"
+ DataInicial7
+ "' AND "
+ " Data <= '"
+ DataFinal7
+ "'");
System.out.println(preparedStatement);
ResultSet resultSetForFullTable = preparedStatement.executeQuery();
jTableVendas.setModel(DbUtils.resultSetToTableModel(resultSetForFullTable));
} catch (SQLException ex) {
System.out.println(ex);
}
// Se apenas artigo estiver a ser pesquisado fazer a seguinte consulta SQL
}
SimpleDateFormat sd15 = new SimpleDateFormat("yyyy-MM-dd");
String DataInicial8 = sd15.format(jDateChooserInicial.getDate());
SimpleDateFormat sd16 = new SimpleDateFormat("yyyy-MM-dd");
String DataFinal8 = sd16.format(jDateChooserFinal.getDate());
if(!(jTextFieldPorArtigo.getText().isEmpty()) && ((jTextFieldPorCliente.getText().isEmpty())) && ((jTextFieldPorVendedor.getText().isEmpty())) && (jDateChooserInicial.getDate().toString().isEmpty()) && (jDateChooserFinal.getDate().toString().isEmpty()) || ((DataInicial8 == null )) || ((DataFinal8 == null ))){
try {
PreparedStatement preparedStatement; //8 SELECT * FROM `fatura` WHERE CodArt LIKE '%AM%'
preparedStatement = ligacao.prepareStatement("SELECT * FROM fatura WHERE CodArt LIKE '%"
+ jTextFieldPorArtigo.getText()
+ "%'");
System.out.println(preparedStatement);
ResultSet resultSetForFullTable = preparedStatement.executeQuery();
jTableVendas.setModel(DbUtils.resultSetToTableModel(resultSetForFullTable));
} catch (SQLException ex) {
System.out.println(ex);
}
【问题讨论】:
-
MVCE(最小、完整和可验证的示例)可能更具可读性:stackoverflow.com/help/mcve
-
我该怎么做?这就像 350 行代码,我必须展示我所有的 if 语句,这样你才能看到 one 和 othe 之间的变化
标签: java nullpointerexception jdatechooser