Chcę wyświetlić tabelę z bazy w javie. Ale nic się nie pokazuje tylko puste okno. Mam taki kod
[syntax="Java"]
import java.sql.;
import javax.swing.;
import javax.swing.table.AbstractTableModel;
public class Tabela extends JPanel {
private Connection con;
private Statement stat;
private ResultSet res;
private JTable tab;
public Tabela(){
tab = new JTable(new Model(res));
add(tab);
JScrollPane jsp = new JScrollPane(tab);
add(jsp);
try{
Connection con = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl",
"user",
"pass");
DatabaseMetaData Datmeta = con.getMetaData();
System.out.println(Datmeta.supportsResultSetType(ResultSet.TYPE_FORWARD_ONLY));
Statement stat = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);
res = stat.executeQuery("SELECT * FROM psy");
stat.close();
con.close();
}
catch(SQLException e){
}
}
private static void Show() {
JFrame frame = new JFrame("Tabela");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setVisible(true);
}
public static void main(String[] args) {
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
Show();
}
});
}
}
[/syntax]
I model tabeli:
[syntax="Java"]
class Model extends AbstractTableModel{
private ResultSet res;
private ResultSetMetaData resmd;
public Model(ResultSet aResultSet){
res = aResultSet;
try{
resmd = res.getMetaData();
}
catch(SQLException e){
e.printStackTrace();
}
}
public String getColumnName(int c){
try{
return resmd.getColumnName(c+1);
}
catch(SQLException e){
e.printStackTrace();
return "";
}
}
public int getColumnCount(){
try{
return resmd.getColumnCount();
}
catch(SQLException e){
e.printStackTrace();
return 0;
}
}
public Object getValueAt(int r, int c){
try{
res.absolute(r+1);
return res.getObject(c+1);
}
catch(SQLException e){
e.printStackTrace();
return null;
}
}
public int getRowCount(){
try{
res.last();
return res.getRow();
}
catch(SQLException e){
e.printStackTrace();
return 0;
}
}
public boolean isCellEditable(int r, int c){
return true;
}
}
[/syntax]