Wesley Marra:
No preparedStatement fica desse jeito mesmo:
…
Caso dê errado post o erro pra que possa tentar identifica-lo.
…
Então …montei uma classe aki e deu certo…
Da uma Olhadinha
import java.sql.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
public class TabelaCompleta extends JFrame
{
Connection conexao;
JTable tab;
public static void main(String args[])
{
JFrame Janela = new TabelaCompleta();
Janela.show();
WindowListener x = new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
};
Janela.addWindowListener(x);
}
public TabelaCompleta()
{
setTitle( "Tabela de Associados" );
setSize(600,300);
String url = "jdbc:mysql://localhost/biblioteca";
try
{
Class.forName("com.mysql.jdbc.Driver");
conexao = DriverManager.getConnection(url, "root", "" );
}
catch (ClassNotFoundException cne)
{
System.out.println("Erro ao carregar o driver JDBC/ODBC");
}
catch (SQLException sqlne )
{
System.out.println("Problemas na Conexão");
}
buscaTabela();
}
private void buscaTabela()
{
Statement st;
ResultSet res;
try
{
Vector cabecalho = new Vector();
Vector linhas = new Vector();
st = conexao.createStatement();
res = st.executeQuery("SELECT * FROM associados where Nome_associado='Rodrigo'");
res.next();
// busca os cabeçalhos
ResultSetMetaData rsmd = res.getMetaData();
for ( int i = 1; i <= rsmd.getColumnCount(); ++i )
cabecalho.addElement( rsmd.getColumnName( i ) );
// busca dados das linhas
do
{
linhas.addElement( proximaLinha( res, rsmd ) );
}
while ( res.next() );
// Mostra a tabela com cabeçalhos e registros
tab = new JTable( linhas, cabecalho );
JScrollPane scroller = new JScrollPane( tab );
getContentPane().add(scroller, BorderLayout.CENTER);
validate();
st.close();
}
catch (SQLException sqlex)
{ }
}
private Vector proximaLinha(ResultSet rs, ResultSetMetaData rsmd )
{
Vector LinhaAtual = new Vector();
try
{
for ( int i = 1; i <= rsmd.getColumnCount(); ++i )
switch( rsmd.getColumnType(i))
{
case Types.VARCHAR:
LinhaAtual.addElement(rs.getString(i));break;
case Types.TIMESTAMP:
LinhaAtual.addElement(rs.getDate(i));break;
}
}
catch(SQLException e) {}
return LinhaAtual;
}
}
Obs: Usei alguns esqueiminhas do do While no livro do Sergio Furgeri
Mais nesta classe aki que eu tentei xma o banco e naum consegui deu um erro no SQLException
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.sql.*;
public class NovoJFrame extends JFrame {
JLabel jLabel1;
static JTextField jTFNomeAssociado;
ResultSet rs;
public static void main(String args[])
{
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new NovoJFrame().setVisible(true);
}
});
}
//------------------CONTRUTOR----------------------
public NovoJFrame() {
jTFNomeAssociado = new JTextField();
jLabel1 = new JLabel();
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
jLabel1.setText("Nome Associado: ");
GroupLayout layout = new GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(jLabel1)
.addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jTFNomeAssociado, GroupLayout.PREFERRED_SIZE, 156, GroupLayout.PREFERRED_SIZE)
.addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE)
.addComponent(jLabel1)
.addComponent(jTFNomeAssociado, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
.addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
pack();
//---------------------COMEÇA A CONEXÂO--------------------
try
{
String user = "root";
String password = "";
String url = "jdbc:mysql://localhost/biblioteca";
Class.forName("com.mysql.jdbc.Driver");
Connection MinhaConexao = DriverManager.getConnection(url);
Statement MeuState = MinhaConexao.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_READ_ONLY);
rs = MeuState.executeQuery("SELECT * FROM associados");
rs.first();
atualizaCampos();
}
catch(ClassNotFoundException ex)
{
System.out.println("Driver JDBC-ODBC não encontrado!");
}
catch(SQLException ex)
{
System.out.println("Problemas na conexao com a fonte de dados");
}
}
//-----------------------FIM DA CONEXÂO--------------------
private void atualizaCampos() {
{
try
{
jTFNomeAssociado.setText(rs.getString("Ficodigo"));
}
catch(SQLException ex)
{ }
}
}
}
Ja abusando um pouco…
tipo na primeira classe se por acaso eu fosse usar ela (vamos dizer meio q “profissionalmente”), eu teria que dividir em mais classes e criar as orienntações neh…como ficaria +/-…pq tentei cria uma classe so pra conexão e depois eu m ebaralhava td na hr da manipulação
Desculpa a enxeção ae de vcs…e Mto obrigado desde ja…
Um Abração!!!