Datensätze in JTable anzeigen

erdmulch

Bekanntes Mitglied
Hallo zusammen,

habe folgendes Problem:
habe in Java eine Klasse geschrieben, die Datensätze aus einer Datenbak ausliest
in der nächsten Klasse habe ich ein JTable eingestzt in die die Datensätze angezeigt werden soll. Allerdings hab ich überhaupt kein Plan wie ich nun die Daten von der Klasse "Database" in die GUI Klasse bekomme.

kann mir jemand helfen?


Java:
import java.awt.EventQueue;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
 
public class Database
{
  String     driver     = "org.postgresql.Driver";
  // --------------------------------------------------------------------------
  String     host       = "localhost";            // !!! anpassen !!!
  String     port       = "5432";                 // !!! anpassen !!!
  String     database   = "Adressen";             // !!! anpassen !!!
  String     user       = "user";                  // !!! anpassen !!!
  String     password   = "password";                  // !!! anpassen !!!
  // --------------------------------------------------------------------------
 
  Connection connection = null;

  public Database ()
  {
    loadJdbcDriver ();
    openConnection ();
    showTimezones ();
    closeConnection ();
  }

  //close the connection
  private void closeConnection ()
  {
    try
    {
      connection.close ();
    }
    catch (SQLException e)
    {
      e.printStackTrace ();
      System.exit (1);
    }
 
    System.out.println ("\nconnection closed");
  }
  
  //@return Url-string for postgreSQL-database connection
  private String getUrl ()
  {
    // PostgreSQL takes one of the following url-forms:
    // ================================================
    // jdbc:postgresql:database
    // jdbc:postgresql://host/database
    // jdbc:postgresql://host:port/database
 
    return ("jdbc:postgresql:" + (host != null ? ("//" + host) + (port != null ? ":" + port : "") + "/" : "") + database);
  }
  //loading the JDBC driver
  private void loadJdbcDriver ()
  {
    try
    {
      Class.forName (driver);
    }
    catch (ClassNotFoundException e)
    {
      e.printStackTrace ();
      System.exit (1);
    }
    System.out.println ("driver loaded");
  }
  
  //opening the connection
  private void openConnection ()
  {
    try
    {
      connection = DriverManager.getConnection (getUrl (), user, password);
    }
    catch (SQLException e)
    {
      e.printStackTrace ();
      System.exit (1);
    }
 
    System.out.println ("connection opened");
  }

  private void showTimezones ()
  {
    try
    {
      Statement statement = connection.createStatement ();
      ResultSet resultSet = statement.executeQuery ("select nachname, vorname, Geburtstag, Mobiltelefon, EmailAdresse from person order by nachname");
 
      ResultSetMetaData resultSetMetaData = resultSet.getMetaData ();
 
      System.out.println ("\n\nshow data from table: 'KontaktePrivat'\n");
 
      String format = "%-20s   %-30s   %-10s  %-25s %s\n";
      //Das "-" bedetutet Linksbündig

      System.out.printf (format + "\n",
                         resultSetMetaData.getColumnLabel (1),
                         resultSetMetaData.getColumnLabel (2),
                         resultSetMetaData.getColumnLabel (3),
                         resultSetMetaData.getColumnLabel (4),
                         resultSetMetaData.getColumnLabel (5));
 
      while (resultSet.next ())
      {
        System.out.printf (format,
                           resultSet.getString (1),
                           resultSet.getString (2),
                           resultSet.getString (3),
                           resultSet.getString (4),
                           resultSet.getString (5));
      }
      
      
 
      resultSet.close ();
      statement.close ();
    }
    catch (SQLException e)
    {
      e.printStackTrace ();
      System.exit (1);
    }
  }
}

Auszug aus der Klasse GUI

Java:
String[][] rowData = {
		    { "Japan", "245" }, { "USA", "240" }, { "Italien", "220" },
		    { "Spanien", "217" }, {"Türkei", "215"} ,{ "England", "214" },
		    { "Frankreich", "190" }, {"Griechenland", "185" },
		    { "Deutschland", "180" }, {"Portugal", "170" }
		  };
		    String[] columnNames = {
		        "Land", "Durchschnittliche Sehdauer pro Tag in Minuten"
		    };

   JTable table = new JTable(rowData, columnNames);
   table.addMouseListener(ListenerMouse);
   JScrollPane pane = new JScrollPane(table);
   pane.setBounds(620, 160, 600, 420);
   p2.add(pane);
 
Zuletzt bearbeitet:
Mit Sysouts schon mal gar nicht. Mach dir eine Methode
Code:
List<Contact> getContacts()
und ruf die von der GUI aus auf. Oder schau dir MVC an, da gibt es FAQ Beiträge dazu
 
ich dachte eigentlich dass ich in der Klasse GUI mit dem Aufruf:
Databse.getshowTimezones();
dass ich die Daten in die JTable bekomme. Leider kann ich die Methode nicht aufrufen was mach ich falsch?
 
Steht ja schon oben im 1. Post von mir.
Aber nach deinem Versuch "getshow..." aufzurufen, würde ich die eher raten erstmal Grundlagen zu lernen, bevor du mit GUI und Datenbanken arbeitest
 

Zurück
Oben