package consulta;
import conexao.Conexao;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.swing.JOptionPane;
import javax.swing.table.DefaultTableModel;
/**
*
* @author munique
*/
public class ConsultaTipo extends javax.swing.JFrame {
/** Creates new form ConsultaTipo */
public ConsultaTipo() {
initComponents();
conexao = new Conexao();
if(conexao.connect() == false)
System.exit(0);
localizarDados();
}
private void localizarDados(){
String query = "SELECT * FROM tipoMedicamento WHERE (nomeTipo LIKE '" + jTextField1.getText() + "%')";
conexao.querySQL(query);
ResultSet resultset = conexao.getResultSet();
DefaultTableModel model = (DefaultTableModel) jTable1.getModel();
for(int i = model.getRowCount() - 1; i >= 0; i--){
model.removeRow(i);
}
String[] dados = new String[2];
try {
if(resultset.first()){
do{
dados[0] = resultset.getString(1);
dados[1] = resultset.getString(2);
model.addRow(dados);
}while(conexao.getResultSet().first());
}
} catch (SQLException ex) {
JOptionPane.showMessageDialog(null, "Erro no banco de dados. " + ex);
}
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
jDialog1 = new javax.swing.JDialog();
jLabel1 = new javax.swing.JLabel();
jTextField1 = new javax.swing.JTextField();
jScrollPane1 = new javax.swing.JScrollPane();
jTable1 = new javax.swing.JTable();
jButton1 = new javax.swing.JButton();
javax.swing.GroupLayout jDialog1Layout = new javax.swing.GroupLayout(jDialog1.getContentPane());
jDialog1.getContentPane().setLayout(jDialog1Layout);
jDialog1Layout.setHorizontalGroup(
jDialog1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 400, Short.MAX_VALUE)
);
jDialog1Layout.setVerticalGroup(
jDialog1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 300, Short.MAX_VALUE)
);
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
jLabel1.setText("Pesquisar");
jTextField1.addKeyListener(new java.awt.event.KeyAdapter() {
public void keyTyped(java.awt.event.KeyEvent evt) {
jTextField1KeyTyped(evt);
}
});
jTable1.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
},
new String [] {
"Código", "Nome do Tipo"
}
) {
Class[] types = new Class [] {
java.lang.String.class, java.lang.String.class
};
boolean[] canEdit = new boolean [] {
false, false
};
public Class getColumnClass(int columnIndex) {
return types [columnIndex];
}
public boolean isCellEditable(int rowIndex, int columnIndex) {
return canEdit [columnIndex];
}
});
jScrollPane1.setViewportView(jTable1);
jTable1.getColumnModel().getColumn(0).setResizable(false);
jTable1.getColumnModel().getColumn(1).setResizable(false);
jButton1.setText("Fechar");
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton1ActionPerformed(evt);
}
});
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(jScrollPane1, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 478, Short.MAX_VALUE)
.addGroup(layout.createSequentialGroup()
.addComponent(jLabel1)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jTextField1, javax.swing.GroupLayout.DEFAULT_SIZE, 428, Short.MAX_VALUE))
.addComponent(jButton1))
.addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel1)
.addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 245, Short.MAX_VALUE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jButton1)
.addContainerGap())
);
pack();
}// </editor-fold>
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
dispose();
}
private void jTextField1KeyTyped(java.awt.event.KeyEvent evt) {
localizarDados();
}
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new ConsultaTipo().setVisible(true);
}
});
}
// Variables declaration - do not modify
private javax.swing.JButton jButton1;
private javax.swing.JDialog jDialog1;
private javax.swing.JLabel jLabel1;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JTable jTable1;
private javax.swing.JTextField jTextField1;
// End of variables declaration
private Conexao conexao;
}
Problema com Resultset no Banco de Dados [resolvido]
4 Respostas
o .first() não é compatível com todos os JDBCs, recomendo não usar.
Troque por:
try {
while(resultset.next()){
dados = new String[2];
dados[0] = resultset.getString(1);
dados[1] = resultset.getString(2);
model.addRow(dados);
} }
} catch (SQLException ex) {
JOptionPane.showMessageDialog(null, "Erro no banco de dados. " + ex);
}
E falta alguns close no resultSet/Statement/Connection, não?
o erro esta no seu createStatement
vc deve ter usado o default… tente:
Statement stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY);
o default é FOWARD_ONLY ou seja… só permite next no seu resultSet dae qndo vc tenta navegar nele, da esse erro
o erro esta no seu createStatementvc deve ter usado o default… tente:
Statement stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);o default é FOWARD_ONLY ou seja… só permite next no seu resultSet dae qndo vc tenta navegar nele, da esse erro
munique, também aconselho a não utilizar o DefaultTableModel. Dependendo da finalidade da tua aplicação, vc poderá ter alguns probleminhas mais pra frente.
Dá uma olhada neste link, pra entender o por quê e uma solução elegante pra isso:
Muito obrigado, era a questão do first e do Statement mesmo.
Adriano, muito obrigado pela dica da DefaultTableModel.