Trabalhando com tabelas - RESOLVIDO

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

1 curtida

Da uma olhada nesse tutorial: http://mballem.wordpress.com/2011/02/21/utilizando-swing-com-banco-de-dados/

Você meio que fez uma confusão desnecessária para fazer a consulta. E o classe correta do Driver deve ser essa: com.mysql.jdbc.Driver e não essa: org.gjt.mm.mysql.Driver

Obrigado pela resposta romarcio.

Eu alterei meu código ai funcionou:

	private Vector getProximaLinha(ResultSet rs, ResultSetMetaData rsmd) throws SQLException {
		Vector linhaAtual = new Vector();
		
		for (int i=1; i<=rsmd.getColumnCount();i++)
			linhaAtual.addElement(rs.getString(i)); //.getShort(i));
		
		return linhaAtual;
	}

Olá.

Se seu problema foi resolvido, coloque no tópico como resolvido!

Até +!

Obrigado pela ajuda

Obs: edite o primeiro post e coloque resolvido nele, pois é ele que aparece como título no fórum!! :smiley: