Olá galera, estou começando na liguagem java e me deparei com uma dúvida, não sei se fiz algo errado, mas não estou conseguindo selecionar os dados de uma tabela no banco de dados MYSQL.
Quando insiro somente numeros em todos os campos a consulta funciona normalmente, mas quando insiro texto em algum campo não consigo.
Obs.: A consulta no MYSQL funciona normalmente com números e textos.
Segue codigo abaixo:
package br.com.integrator.cap11.dados;
import javax.swing.SwingUtilities;
import java.awt.BorderLayout;
import javax.swing.JPanel;
import java.awt.GraphicsConfiguration;
import java.awt.HeadlessException;
import javax.swing.JFrame;
import java.awt.*;
import javax.swing.*;
import java.sql.*;
import java.util.*;
public class TrabBancoEJTable extends JFrame {
private static final long serialVersionUID = 1L;
private JPanel jContentPane = null;
private JTable jTable = null;
private Connection conn; // @jve:decl-index=0:
public TrabBancoEJTable() throws HeadlessException {
// TODO Auto-generated constructor stub
super();
initialize();
}
public TrabBancoEJTable(GraphicsConfiguration gc) {
super(gc);
// TODO Auto-generated constructor stub
initialize();
}
public TrabBancoEJTable(String title) throws HeadlessException {
super(title);
// TODO Auto-generated constructor stub
initialize();
}
public TrabBancoEJTable(String title, GraphicsConfiguration gc) {
super(title, gc);
// TODO Auto-generated constructor stub
initialize();
}
private Vector getProximaLinha(ResultSet rs, ResultSetMetaData rsmd) throws SQLException {
Vector linhaAtual = new Vector();
for (int i=1; i<=rsmd.getColumnCount();i++)
linhaAtual.addElement(rs.getShort(i));
return linhaAtual;
}
private void mostrarResultados (ResultSet rs) throws SQLException {
//posiciona o resultado no primeiro registro
boolean dados = rs.next();
//caso não existam registros, mostra uma mensagem
if(!dados){
JOptionPane.showMessageDialog(this, "Nenhum registro encontrado");
return;
}
Vector colunas = new Vector();
Vector linhas = new Vector();
try{
//obtem os nomes dos campos do banco de dados
ResultSetMetaData rsmd = rs.getMetaData();
for(int i=1; i<=rsmd.getColumnCount(); i++){
colunas.addElement(rsmd.getColumnName(i));
}
//obtem os dados das linhas do banco de dados
do{
linhas.addElement(getProximaLinha(rs, rsmd));
}while (rs.next());
jTable = new JTable(linhas, colunas);
JScrollPane jScrollPane = new JScrollPane(jTable);
getContentPane().add(jScrollPane, java.awt.BorderLayout.CENTER);
validate();
}
catch(SQLException sqlex){
sqlex.printStackTrace();
}
}
private void getJTable(){
Statement statement;
ResultSet result;
try{
String query = "SELECT * FROM LIVROS";
statement = conn.createStatement();
result = statement.executeQuery(query);
mostrarResultados(result);
statement.close();
}
catch(SQLException sqlex){
sqlex.printStackTrace();
}
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
TrabBancoEJTable tbet = new TrabBancoEJTable();
tbet.setVisible(true);
/*
SwingUtilities.invokeLater(new Runnable() {
public void run() {
TrabBancoEJTable thisClass = new TrabBancoEJTable();
thisClass.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
thisClass.setVisible(true);
}
});*/
}
/**
* This method initializes this
*
* @return void
*/
private void initialize() {
try{
Class.forName("org.gjt.mm.mysql.Driver");
conn = DriverManager.getConnection("jdbc:mysql://localhost/livraria","root","root");
}
catch(ClassNotFoundException cnfe){
System.out.println(cnfe.getMessage());
}
catch(SQLException sqlex){
System.out.println(sqlex.getMessage());
}
getJTable();
try{
conn.close();
}
catch(SQLException sqlex){
sqlex.getMessage();
}
this.setSize(350, 230);
this.setTitle("Banco de Dados e Tabelas");
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
/**
* This method initializes jContentPane
*
* @return javax.swing.JPanel
*/
private JPanel getJContentPane() {
if (jContentPane == null) {
jContentPane = new JPanel();
jContentPane.setLayout(new BorderLayout());
}
return jContentPane;
}
}
Em anexo está o resultado em java.
Muito obrigado pela ajuda galera
Abraços