public Vector Coluna(){
Vector cabecalho = new Vector();
cabecalho.add("Nome do Filme");
cabecalho.add("Tipo de Midia");
return cabecalho;
}
//criado as colunas para JTable
Agora na primeira class, onde faço a coneccao com o banco "Mysql"
implementei o seguinte metodo para as linhas:
public Vector carregaTabela() throws Exception
{
Vector linhas = new Vector();
Statement st;
ResultSet res;
try
{
st = conn.createStatement();
res = st.executeQuery("SELECT TITULO,MIDIA FROM FILMES");
res.next();
ResultSetMetaData rsmd = res.getMetaData();
do{
linhas.addElement(proximaLinha(res,rsmd));
}
while(res.next());
st.close();
return linhas; //obs eu naum tenho certeza nessa linha
}catch(SQLException e){
JOptionPane.showMessageDialog(null, e, "ERRO", 2);
}return null;
}
public Vector proximaLinha(ResultSet rs, ResultSetMetaData rsmd) throws Exception {
Vector linhaAtual = new Vector();
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.getTimestamp(i));break;
case Types.TIME:
linhaAtual.addElement(rs.getTime(i));break;
case Types.DATE:
linhaAtual.addElement(rs.getDate(i));break;
case Types.REAL:
linhaAtual.addElement(new Float(rs.getFloat(i)));break;
case Types.INTEGER:
linhaAtual.addElement(new Integer(rs.getInt(i)));break;
}
}
return linhaAtual;
}
public JTable getJTable() throws Exception {
if (jTable == null) {
jTable = new JTable(con.carregaTabela(),montarColunasParaLista());
} //obs aqui ta erro q meu Editor acusa nos paramentros do construtor da JTable pois são os dois Vector criados anteriormente portanto qdo comentei que naum tenho certeza se ta retornando certo lá no metodo carregaTabela();
será que ta certo isso?
obs a classe coneccao esta implementada
return jTable;
}
import java.sql.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.table.*;
public class AcessoBD extends JDialog
{
private Connection con; // objeto de conexão
private JTable tab;
public AcessoBD()
{
setBounds(100,100,600,180);
carregaTabela();
setVisible(true);
}
public void conecta(){
String url = "jdbc:mysql://localhost/locadora"; // indica o local do banco;
try
{
Class.forName("com.mysql.jdbc.Driver"); // indica o driver de conexão;
con = DriverManager.getConnection(url); // faz a conexão com o banco;
}
catch(Exception e)
{
JOptionPane.showMessageDialog(this, e, "Erro", 2);
}
}
private void carregaTabela()
{
Statement st;
ResultSet res; // guarda o resultado do comando SQL
try
{
conecta();
Vector cabecalho = new Vector();
cabecalho.add("Nome do Filme");
cabecalho.add("Tipo de Midia");
Vector linhas = new Vector();
st = con.createStatement(); // para criar um comando;
res = st.executeQuery("select Titulo,Midia from Filmes order by Titulo"); // comando com sintaxe sql
res.next(); // para ir para o proximo registro, pois o "cursor" sai numa posição acima da primeira;
ResultSetMetaData rsmd = res.getMetaData(); // retorna a definição da tabela
do
{
linhas.addElement(proximaLinha(res,rsmd));
}
while(res.next()); // repetição do_while - adiciona um elemento no vetor enquanto tiver proxima linha
tab = new JTable(linhas,cabecalho);
JScrollPane sc = new JScrollPane(tab);
getContentPane().add(sc, BorderLayout.CENTER);
validate(); //ajusta os dados dentro da janela;
st.close(); // fecha o comando;
}
catch(SQLException e)
{
JOptionPane.showMessageDialog(this, e, "ERRO", 2);
}
}
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.getTimestamp(i));
break;
case Types.TIME:
linhaAtual.addElement(rs.getTime(i));
break;
case Types.DATE:
linhaAtual.addElement(rs.getDate(i));
break;
case Types.REAL:
linhaAtual.addElement(new Float(rs.getFloat(i)));
break;
case Types.INTEGER:
linhaAtual.addElement(new Integer(rs.getInt(i)));
break;
}
}
}
catch(SQLException e)
{
JOptionPane.showMessageDialog(this, e, "Erro", 2);
}
return linhaAtual;
}
public static void main(String args[])
{
new AcessoBD();
}
}
Portanto minha dificulfdade é essa eu separei esses metodos e naum estou conseguindo atribuir a JTable, resumindo quero fazer tudo isso ae so q tenho um metodo para as linha q esta e uma classe e a JTable em outra..como fço isso alguem pode me ajudar pois estou tendo dificuldades ...
Obrigado e desculpe por ter sido muito extenso mas quero ser bem claro, espero q fui..
Aguardo resposta...