DB-Inhalt in JTable

Status
Nicht offen für weitere Antworten.

Vril

Bekanntes Mitglied
Hallo,

hat jemand zufällig einen kompletten Beispielcode oder eine schöne Anleitung wie man Daten aus einer DB, z.B. Access, in einen JTable bekommt? Super wäre natürlich auch noch wenn sich der JTable automatisch aktualisiert, irgendwie FireDataTableChanged, wenn sich die DB verändert!

Ich weiss, das ist jetzt ziemlich frech gefragt, aber ich hab da jetzt schon so viele Schnipsel gemacht und das klappt alles nicht... Wäre super wenn mir jemand helfen könnte!
 
T

tüdelü

Gast
Code:
import java.awt.BorderLayout;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.List;

import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;

import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.input.SAXBuilder;

final class ContactTable extends JPanel
{
   public ContactTable(File file)
   {
      try
      {
         setLayout(new BorderLayout());
         readDB(file);
      } catch (FileNotFoundException e)
      {
         e.printStackTrace();
      } catch (JDOMException e)
      {
         e.printStackTrace();
      } catch (IOException e)
      {
         e.printStackTrace();
      }
   }
   SAXBuilder builder;
   Document doc;
   Element root;
   List elements;
   public void readDB(File file) throws FileNotFoundException, JDOMException, IOException
   {
      builder = new SAXBuilder();
      doc = builder.build(new FileReader(file));
      root = doc.getRootElement();
      elements = root.getChildren();
      Object[][] contacts = new Object[elements.size()][7];
      for(int i=0; i<elements.size(); i++)
      {
         Element contact = (Element)elements.get(i);
         contacts[i][0] = contact.getChildTextTrim("name");
         contacts[i][1] = contact.getChildTextTrim("forename");
         contacts[i][2] = contact.getChildTextTrim("street");
         contacts[i][3] = contact.getChildTextTrim("zip");
         contacts[i][4] = contact.getChildTextTrim("private");
         contacts[i][5] = contact.getChildTextTrim("mobile");
         contacts[i][6] = contact.getChildTextTrim("email");
      }
      String[] columns = {"Name", "Vorname", "Strasse", "Ort", "Privat", "Mobil", "E-Mail"};
      JTable contactTable = new JTable(contacts, columns);
      add(new JScrollPane(contactTable));
   }
   public String getListSize()
   {
      return ""+elements.size();
   }
}

Zwar keine DB aber XML vielleicht hilfts
 

T1M

Bekanntes Mitglied
hi, ich mach gerad genau das gleiche. daten aus ner db in ne jtable.
habs sogar fast genauso wie tüdelü.
nur bekomm ich ne ArrayIndexOutOfBoundsException.
hier mal code:
Code:
...
public void getDaten()
	{
		System.out.println("getDaten");

	 String[] columnNames =
	 {
	 		"Station",
            "Name",
	};
	  	  	  
	 //XXXXXXXXXXXXXXXXXXX So oder so ähnlich  XXXXXXXXXXXXXXXXXXXXXXXXXX	
	  	
	  	//DBFrids db = new DBFrids("FRIDS_TEST");
          KreissaalPat[] pats = new KreissaalPat[100];
	  System.out.println("vor getKrs: " + pats);	
	  pats = dbfrids.getKrspat();
	  System.out.println("nach getKrs: " + pats);
	  
	  for (int i=0; i<pats.length; i++)
	  {
	  	data[i][0]= pats[i].getStation();
	  	data[i][1]= pats[i].getName();
	  	}
	  System.out.println("nach for-schleife: " + pats);
	}
...
model = new DefaultTableModel(data, columnNames);
        table = new JTable(model)
		{
	     public Class getColumnClass(int i)
	     {
	     	return Object.class;
	     }
	   };
KreissaalPat is ne eigene Klasse. ich nehm mal an, das die exception kommt, weil da was mit pats net stimmt. aber was?
 

T1M

Bekanntes Mitglied
humpf,
habs mal n bissl umgeschrieben. jetzt bekomm ich keinen fehler mehr, allerdings ist das panel, in dem die jtable liegen sollte leer ...
damn it! :?
 

Vril

Bekanntes Mitglied
Also ich habs jetzt mal so hinbekommen, fehlt halt noch ne update Funktion und das Layout ist noch nicht einwandfrei:
Code:
import java.sql.*;
import java.util.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.table.*;

class MyPizzaTableModel extends AbstractTableModel{
	
	private Connection con = null;
	Statement stmt = null;
	
	public void init(){
		try{
			Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
		  con = DriverManager.getConnection(
		  	"jdbc:odbc:;DRIVER=Microsoft Access Driver (*.mdb);DBQ=test"); 
		}	catch (Exception e){
			System.err.println(e);
		}
	}
	
	String SpaltenNamen[] = {"Nr", "Name", "Preis"};
	Vector Spalten [] = {new Vector(), new Vector(), new Vector()};
	
	public void fetchData(){
		try{
			Statement stmt = con.createStatement();
			ResultSet rs = stmt.executeQuery ("SELECT * FROM test");;
			
			while (rs.next()){
				for (int i = 0; i < SpaltenNamen.length; i++)
				  Spalten[i].addElement (rs.getString (SpaltenNamen[i]));
			}
			stmt.close();
		} catch (SQLException e){
			System.err.println(e);
		}
	}
	public String getColumnName (int column){
		return SpaltenNamen[column];
	}
	public int getColumnCount(){
		return SpaltenNamen.length;
	}
	public int getRowCount(){
		return Spalten[0].size();
	}
	public boolean isCellEditable(int row, int col){
		return false;
	}
	public Object getValueAt(int row, int col){
		return Spalten[col].elementAt(row);
	}
	}
	public class TablePizzaService2 extends JFrame{
		
		public TablePizzaService2 (String ResourceName){
			setDefaultCloseOperation (EXIT_ON_CLOSE);
			setSize(600,200);
			
			MyPizzaTableModel dataModel = new MyPizzaTableModel();
			
			dataModel.init ();
			dataModel.fetchData ();
			
			JTable table = new JTable(dataModel);
			JScrollPane scrollpane = new JScrollPane(table);
			
			JPanel mainPanel = new JPanel();
			mainPanel.add(scrollpane, BorderLayout.CENTER);
			
			getContentPane().add(mainPanel);
			
			setVisible(true);
		}/*
		public static JPanel createTitledPanel(String title){
			JPanel p = new JPanel();
			p.setBorder(
				BorderFactory.createTitledBorder(
					BorderFactory,createEtchedBorder(), title));
			p.setLayout(new BorderLayout());
			return p;
		}*/
		public static void main(String[] args){
			TablePizzaService2 ps = new TablePizzaService2 ("PizzaService");
		}
	
}
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
B Wie kann ich eine Jtable mit Inhalt einer SQL Abfrage füllen Datenbankprogrammierung 14
N MySQL MYSQL Inhalt an JTable übergeben. Datenbankprogrammierung 11
L CSV Datei mit DB Inhalt vergleichen Datenbankprogrammierung 20
L MySQL Vergleichen von Array-Inhalt, Ausgabe gleicher Daten Datenbankprogrammierung 3
L Tabelle mit Inhalt füllen Datenbankprogrammierung 2
I Inhalt einer hsqldb anzeigen Datenbankprogrammierung 1
T Fehler beim ausgeben von Tabellen Inhalt Datenbankprogrammierung 9
B MySQL Zwischenspeichern von DB-Inhalt Datenbankprogrammierung 8
A Wie Tabelle auf bestimmten Inhalt überprüfen? Datenbankprogrammierung 7
T Inhalt einer Datenbanktabelle autom. in XML ausgeben Datenbankprogrammierung 7
T ResultSet-Inhalt in Arrays schreiben Datenbankprogrammierung 3
M Gelöst: JavaDB - Derby Inhalt in Jar Datei speichern Datenbankprogrammierung 5
G Inhalt eine Clob Feldes zw. zwei DB's kopieren Datenbankprogrammierung 2
T Inhalt von Blob in Console ausgeben Datenbankprogrammierung 2
P Inhalt einer Variable in Datenbank schreiben Datenbankprogrammierung 13
H Tabellenspalte in JTable in der falschen Reihenfolge Datenbankprogrammierung 10
M Datenbank editierbach machen in JTable Datenbankprogrammierung 13
L jTable mit Datenbankwerten befüllen Datenbankprogrammierung 7
S MySQL JTable zeigt nach Datenbankabfrage eine Spalte zu viel an Datenbankprogrammierung 0
A SQLite jTable binding mit Netbeans Datenbankprogrammierung 11
C MySQL JTable in JScrollPane nach insert aktualisieren Datenbankprogrammierung 3
M MySQL SQL Abfrage in JTable mit Berechnung Datenbankprogrammierung 3
L JTable-DB: Letzter wert wird nicht angezeigt. Datenbankprogrammierung 0
S MySQL jPMdbc&MySQL = Fehlerhafte Umlaute in JTable Datenbankprogrammierung 0
R HSQLDB Tabelle in JTable übertragen Datenbankprogrammierung 3
P MySql daten in leeren jtable übertragen Datenbankprogrammierung 5
D von Datenbank in JTable füllen Datenbankprogrammierung 16
D JTable stellt DB da Datenbankprogrammierung 24
A Ausgewählten Jtable Eintrag aus Db löschen Datenbankprogrammierung 9
D DB Tabelle in JTable anzeigen - Probleme Datenbankprogrammierung 8
Rudolf MySQL MySQL Tabelle mit Fremdschlüsseln in JTable darstellen Datenbankprogrammierung 5
E csv datei in JTable einlesen Datenbankprogrammierung 3
D ArrayIndexOutOfBoundsException bei Update von JTable und Model Datenbankprogrammierung 13
E JTable mit Datenbankinhalt befüllen Datenbankprogrammierung 4
0 ResultSet in JTable Datenbankprogrammierung 14
M MySQL Table in Jtable integrieren Datenbankprogrammierung 26
B MySQL Row und ColumnIndex aus einer JTable (mysqlDb) selectieren Datenbankprogrammierung 18
M JTable änderung sofort auch in MySQL ändern. Datenbankprogrammierung 7
X Daten einer DatenbankTabelle in JTable darstellen Datenbankprogrammierung 13
M SQL Abfrage in jTable einfügen Datenbankprogrammierung 8
oliver1974 JPA, JTable und 2 DB-Tabellen... Datenbankprogrammierung 2
K JTable mit JDBC verbinden Datenbankprogrammierung 5
D PostgreSQL Von JTable -> Datenbank Datenbankprogrammierung 6
T Recordsets in eine JTable einlesen mit Netbeans 6.0 Datenbankprogrammierung 2
P JTable mit Daten aus MySQL befüllen mit Filterung Datenbankprogrammierung 3
N ID des Datensatzes aus JTable holen (nicht Index!) Datenbankprogrammierung 4
J Von Datenbank --> Vector --> JTable Problem Datenbankprogrammierung 6
J Klasse für Datensatzblättern in Verbindung mit JTable gesuch Datenbankprogrammierung 6
J jTable aktualisieren! Datenbankprogrammierung 2
D Daten von Datenbank in JTable füllen... Datenbankprogrammierung 3
G JTable befüllen Datenbankprogrammierung 5

Ähnliche Java Themen

Neue Themen


Oben