Ich bin ein Anfänger in der Programmierung, also wenn möglich helfen Sie mir aus! Ich mache ein Programm, das zu DataBase (MySQL) auswählt, abhängig davon, nach welcher Benutzerauswahl gesucht wird. Programm hat 4 verschiedene Dinge zu suchen: Artigo, Cliente, Vendedor und Daten, die 2 jDateChoosers (es wird zwischen ersten und zweiten Datum abfragen). Also ich brauche 16 wenn Bedingungen um alle möglichen Kombinationen zu fangen.Dereferenzierung mögliche Nullzeiger Ausnahme in einer if-Anweisung mit JdateChioser
Hier ist mein Code über ein Ereignis, die jTextFieldClienteKeyReleased, berücksichtigen, dass der Code in allen anderen TextFieldsKeyReleased und jDateChoosersMouseClicked gleich ist.
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);
}
Ein MVCE (minimales, vollständiges und verifizierbares Beispiel) ist möglicherweise besser lesbar: http://stackoverflow.com/help/mcve – Peter
Wie kann ich das tun? Es ist wie 350 Zeilen Code, ich musste alle meine if-Anweisungen zeigen, damit Sie sehen können, was sich zwischen einem und anderen ändert – Ricardo