Pessoal tenho um botão que dispara um consulta (select) no meu banco, se eu passa algum parametro em um tTextField ele consulta normal, contudo se eu não passo parametro ele não dá erro de não conseguir conectar no banco.
Olha o código acionado pelo meu botão:
private void jButtonConsultarActionPerformed(java.awt.event.ActionEvent evt) {
Conexao conexao2 = new Conexao();
try {
conexao2.conexao();
} catch (FileNotFoundException fnfe) {
JOptionPane.showMessageDialog(null,
"Arquivo do Banco de Dados não encontrado! Código do erro: " + fnfe.toString(),
"Erro!",
JOptionPane.ERROR_MESSAGE);
} catch (SQLException sqle) {
JOptionPane.showMessageDialog(null,
"Impossível conectar com o Banco de Dados! Código do erro: " + sqle.toString(),
"Erro!",
JOptionPane.ERROR_MESSAGE);
} catch (IOException ioe) {
JOptionPane.showMessageDialog(null,
"Exceção do tipo IOException gerada! Código do erro: " + ioe.toString(),
"Erro!",
JOptionPane.ERROR_MESSAGE);
} catch (ClassNotFoundException cnfe) {
JOptionPane.showMessageDialog(null,
"Exceção do tipo ClassNotFoundException gerada! Código do erro: " + cnfe.toString(),
"Erro!",
JOptionPane.ERROR_MESSAGE);
}
if (jTextFieldConsulta.getText() != null){
conexao2.setSelect("select e.cod_cli, e.razao_soc from bebwilson.clientes e"
+ " where e.cod_cli = " + jTextFieldConsulta.getText());
conexao2.abrirbanco();
try{
ResultSet rs = conexao2.stm.executeQuery();
JTabela(rs);
}catch(SQLException sqle){
JOptionPane.showMessageDialog(null,
"Impossível conectar com o Banco de Dados! Código do erro: " + sqle.toString(),
"Erro!",
JOptionPane.ERROR_MESSAGE);
}
}
if(jTextFieldConsulta.getText() == null){
conexao2.setSelect("select e.cod_cli, e.razao_soc from bebwilson.clientes e");
conexao2.abrirbanco();
try{
ResultSet rs = conexao2.stm.executeQuery();
JTabela(rs);
}catch (SQLException sqle){
JOptionPane.showMessageDialog(null,
"Impossível conectar com o Banco de Dados! Código do erro: " + sqle.toString(),
"Erro!",
JOptionPane.ERROR_MESSAGE);
}
}
// conexao2.fecharbanco();
}
Abaixo está o código do método JTable acionado no botão:
//Método para carregar a jTable de dados da select
public void JTabela(ResultSet pStr){
Grade.removeAll();
try{
ResultSet rs = pStr;
if (rs == null) return;
ResultSetMetaData rsmd = rs.getMetaData();
/*Pega o nome da coluna no banco de dados
String[] col = new String[rsmd.getColumnCount()];
for (int it = 0; it < rsmd.getColumnCount(); ++it)
col[it] = rsmd.getColumnLabel(it + 1);*/
Vector vt = new Vector();
while (rs.next()){
Object[] row = new Object[rsmd.getColumnCount()];
for (int it = 0; it < rsmd.getColumnCount(); it++)
row[it] = this.getValue(rs, rsmd, it);
vt.add(row);
}
Object[][] lin = (Object[][])vt.toArray(new Object[0][0]);
Grade.setModel(new DefaultTableModel(
lin,
new String [] {
"Código", "Razão Social", "Impressão"
}
)
{
Class[] types = new Class [] {
java.lang.String.class, java.lang.String.class, java.lang.Boolean.class
};
boolean[] canEdit = new boolean [] {
false, false, true
};
public Class getColumnClass(int columnIndex) {
return types [columnIndex];
}
public boolean isCellEditable(int rowIndex, int columnIndex) {
return canEdit [columnIndex];
}
}
);
Grade.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS);;
for (int i=0;i < Grade.getColumnModel().getColumnCount();i++)
{
// Configurar o alinhamento das colunas
//DefaultTableCellRenderer r = new DefaultTableCellRenderer();
//r.setHorizontalAlignment(JLabel.RIGHT);
//Grade.getColumnModel().getColumn(i).setCellRenderer(r);
// Configurar o Tamanhos das Colunhas individualmente
Grade.getColumnModel().getColumn(0).setPreferredWidth(30);
Grade.getColumnModel().getColumn(1).setPreferredWidth(320);
Grade.getColumnModel().getColumn(3).setPreferredWidth(30);
}
/*JCheckBox renderer = new JCheckBox();
Grade.getColumnModel().getColumn(2).setCellRenderer(DefaultRenderer(renderer));*/
}catch (SQLException sqle){
JOptionPane.showMessageDialog(null,
"Impossível conectar com o Banco de Dados! Código: " + sqle.toString(),
"Erro!",
JOptionPane.ERROR_MESSAGE);
}
}
public Object getValue(ResultSet rs, ResultSetMetaData rsmd, int col) throws SQLException{
if ((rsmd.getColumnType(col + 1) == Types.TIMESTAMP) ||
(rsmd.getColumnType(col + 1) == Types.DATE)){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
try{
Date dt = sdf.parse(rs.getString(col+1));
sdf = new SimpleDateFormat("dd/MM/yyyy");
return sdf.format(dt);
}catch (ParseException pe){
return new String();
}
}
return rs.getObject(col +1);
}