Re:Jtable com banco de dados

7 respostas
C

Olá.
Neste exemplo ele conecta um Banco MySQL,faz uma consulta e imprime o ResultSet em um JTable.

Espero que te ajude!!!

package TabelasB; 

import java.sql.*; 
import java.awt.*; 
import javax.swing.*; 

 

import java.util.*;



public class ConsulAut extends JPanel { 
private Connection connection; 
private JTable table; 

public ConsulAut() { 
super(); 




String dbURL ="jdbc:mysql://127.0.0.1/biblioteca"; 
String usuario = "root";
String senha = "root";




try { 
Class.forName("com.mysql.jdbc.Driver"); 
connection = DriverManager.getConnection(dbURL, usuario, senha); 
} 
catch (ClassNotFoundException cnfex) { 
System.err.println( 
""); 
cnfex.printStackTrace(); 
System.exit(1); 
} 
catch (SQLException sqlex) { 
System.err.println(""); 
sqlex.printStackTrace(); 
} 

getTable(); 
this.setSize(450, 370); 
setLocation(5,20); 

} 

private void getTable() 
{ 
Statement statement; 
ResultSet resultset; 

try { 
String query = "Select autor,nome,localdearmazenamento from obra order by autor"; 
statement = connection.createStatement(); 
resultset = statement.executeQuery(query); 
displayResultSet(resultset); 
statement.close(); 
} 
catch ( SQLException sqlex ) { 
sqlex.printStackTrace(); 
} 
} 

private void displayResultSet(ResultSet rs ) 
throws SQLException 
{ 
boolean moreRecords = rs.next(); 

if (! moreRecords) { 
JOptionPane.showMessageDialog(this, "Nao existem registros na tabela!!"); 
//setTitle(); 
return; 
} 



Vector columnHeads = new Vector(); 
Vector rows = new Vector(); 

try { 
ResultSetMetaData rsmd = rs.getMetaData(); 
for (int i = 1; i <= rsmd.getColumnCount(); ++i) 
columnHeads.addElement(rsmd.getColumnName(i)); 

do { 
rows.addElement(getNextRow(rs, rsmd)); 
} while (rs.next()); 

table = new JTable(rows, columnHeads); 
JScrollPane scroller = new JScrollPane(table); 
add(scroller,BorderLayout.CENTER); 
scroller.setPreferredSize(new java.awt.Dimension(447, 353));
validate(); 
} 
catch (SQLException sqlex) { 
sqlex.printStackTrace(); 
} 
} 

private Vector getNextRow( ResultSet rs, ResultSetMetaData rsmd) 
throws SQLException 
{ 
Vector currentRow = new Vector(); 
for (int i = 1; i <= rsmd.getColumnCount(); ++i) 
switch(rsmd.getColumnType(i)) { 
case Types.VARCHAR: currentRow.addElement(rs.getString(i)); 
break; 
case Types.INTEGER:currentRow.addElement(new Long(rs.getLong(i))); 
break; 
/*case Types.LONGCHAR:currentRow.addElement(rs.getString(i)); 
break;*/ 
default: System.out.println("Tipo dos Dados: " + rsmd.getColumnTypeName(i)); 
} 
return currentRow; 
} 

public void shutDown() 
{ 
try { 
connection.close(); 
} 
catch (SQLException sqlex) { 
System.err.println("N? foi poss?el desconectar."); 
sqlex.printStackTrace(); 
} 
} 

}

7 Respostas

Jefries

Como eu faço isso com o hibernate???

É que em minha aplicação estou utilisando o hibernate, existe alguma maneira de usa-lo para isso

Marky.Vasconcelos

Se voce usa Hibernate, melhor ainda!

Por que o exemplo do amigo acima usa o DefaultTableModel que gera mais problemas do que soluções.

Com o Hibernate voce faz uma consulta e ele gera uma List voce precisa ter um TableModel que trabalhe com esses dados.
Veja na minha assinatura o link de como fazer isso.

Jefries

Humm…

Mas então, eu tenho criar este objeto novo…

É isso mesmo???

É uma nova classe?

mas e dai como eu implementaria o código de acesso a banco???

kenneth

Faala camarada…

Entao… Com Hibernate, vc nao implementa o acesso ao banco…
Voce configura e ele faz o acesso. Voce so precisa recuperar
e mandar salvar os dados…

Da uma lida aqui:
http://www.guj.com.br/article.show.logic?id=174

Abraco!

Marky.Vasconcelos

Ué… como voce faz as consultas no Hibenate?

kenneth

Falae Marky…

Cara, se foi comigo, eu me referia ao acesso, a conexao com o banco em si
:lol:

hehehehehe…

Valeu, abraco!

raikk0n3n

Como faço isso???

Criado 30 de junho de 2006
Ultima resposta 30 de jun. de 2006
Respostas 7
Participantes 5