MySQL MySQL Tabelle mit Fremdschlüsseln in JTable darstellen

Rudolf

Bekanntes Mitglied
Hallo,

ich benutze folgenden Code, um eine mySQL Tabelle auszulesen und in einer JTable darzustellen:

Java:
private JTable table = new MySQLAccess().readDataBase("select * from table");

Java:
public class MySQLAccess {

	private Connection con;
	private Statement stmt;
	private ResultSet rs;

	public JTable readDataBase(String query) {
		JTable table = new JTable();
		Vector columnNames = new Vector();
		Vector data = new Vector();
		try {
			Class.forName("com.mysql.jdbc.Driver");
			con = DriverManager.getConnection("jdbc:mysql://localhost/db?user=root");
			stmt = con.createStatement();
			rs = stmt.executeQuery(query);
			
			ResultSetMetaData md = rs.getMetaData();
			int columns = md.getColumnCount();
			for (int i = 1; i <= columns; i++) {
				columnNames.addElement(md.getColumnName(i));
			}
			while (rs.next()) {
				Vector row = new Vector(columns);
				for (int i = 1; i <= columns; i++) {
					row.addElement(rs.getObject(i));
				}
				data.addElement(row);
			}
		} catch (Exception e) {
			System.out.println(e);
		} finally {
			close();
		}
		
		table = new JTable(data, columnNames);
		
		TableColumn col;
		for (int i = 0; i < table.getColumnCount(); i++) {
			col = table.getColumnModel().getColumn(i);
			col.setMaxWidth(250);
		}
		return table;
	}
	
	private void close() {
		try {
			if (rs != null)
				rs.close();
			if (stmt != null)
				stmt.close();
			if (con != null)
				con.close();
		} catch (Exception e) {
		}
	}

Das funktioniert soweit auch. Die Frage ist nur, wie behandle ich Spalten, die einen Fremdschlüsseln enthalten. Ziel ist natürlich, dass nicht der Schlüssel dargestellt wird, sondern der Inhalt, auf den es verweist. In meinem Fall ist es eine Tabelle, die eine Spalte "Titel" enthält und eine VARCHAR(255) enthält.
 

HimBromBeere

Top Contributor
Mit ´nem Tabellen-Join natürlich, den du dir erstmal in SQL zusammenbauen musst.

Sowas der Art:
SQL:
Select "Titel", autor, preis from table1 
inner join (select ID, "Titel" from table2 as b) as a ON a.ID = b.ID
 
Zuletzt bearbeitet:
N

nillehammer

Gast
Wenn jeder Datensatz eine Referenz zu einem Titel hat (also NOT NULL), dann wäre es ein INNER JOIN. Wenn es aber auch Datensätze ohne Referenz zu Titeln gibt, dann wäre es LEFT JOIN.

Dafür ein Beispiel. Es gibt eine Tabelle Person mit id, titelId, vorname, nachname und eine Tabelle Titel mit id und titel. Um die vollständigen Namen einer Person inkl. Titel (z.B. Dr. oder Prof.) zu erhalten, schreibt man folgende Abfrage:
SQL:
SELECT p.id AS Id, t.titel AS Titel, p.vorname AS Vorname, p.nachname AS Nachname
FROM Person p
INNER JOIN Titel t
ON p.titelId = t.id;
Nachteil ist, dass man Personen ohne Titel nicht angezeigt bekommt. Hier müsste man einen LEFT JOIN benutzen, der so aussieht:
SQL:
SELECT p.id AS id, t.titel AS Titel, p.vorname AS Vorname, p.nachname AS Nachname
FROM Person p
LEFT JOIN Titel t
ON p.idTitel = t.id;
 

Rudolf

Bekanntes Mitglied
Scheinbar scheint mom. etwas nicht zu funktionieren.

Wenn ich

SQL:
select m.vorname, m.nachname, m.geburtsdatum, s.bezeichnung Status 
from Mitglied m
left join Status s
on m.Status = s.ID

ausführe, wird der Fremdschlüssel richtig verarbeitet, aber die Spaltenüberschrift ist Bezeichnung statt Status.

Mit as nach "s.bezeichnung" funktionierts auch nicht.
 
N

nillehammer

Gast
Hmm, ich glaube in einigen SQL-Dialekten (abhängig vom Datenbanksystem) ist STATUS ein reserviertes Keyword. Kann sein, dass er deswegen Probleme hat. Nimm mal testweise was anderes als STATUS. Und das "AS" muss auf jeden Fall rein.

[EDIT]
1. Ich seh grad im Titel steht, dass Du MySql benutzt. Dort ist es ein Keyword. Hab grad folgende Diskussion auf StackOverflow dazu gefunden: sql - A Column called Status in MySql - Stack Overflow
[/EDIT]
 
Zuletzt bearbeitet von einem Moderator:
Ähnliche Java Themen
  Titel Forum Antworten Datum
N Temporäre tabelle MySQL Datenbankprogrammierung 2
N Einzelne Spalte in MySQL-DB-Tabelle schreiben Datenbankprogrammierung 7
M Ausgabe in Tabelle der MySQL-Datenbank mit Java Datenbankprogrammierung 4
D MySql Tabelle mit MySQLAdministrator (Anfänger) Datenbankprogrammierung 5
C Prüfen, ob eine MySQL-Tabelle bereits existiert Datenbankprogrammierung 7
Z MySQL Tabelle immer leer Datenbankprogrammierung 5
G Int aus MySQL-Tabelle lesen? Datenbankprogrammierung 5
L Datum (String) in MySQL-Tabelle (date) speichern Datenbankprogrammierung 4
C sortieren einer Tabelle (mysql) Datenbankprogrammierung 4
Juelin Java und MySQL MariaDB - WHERE-Klausel Datenbankprogrammierung 17
W MySQL-Connector funktioniert nicht über WLAN -> MacOS Datenbankprogrammierung 10
Juelin MySQL Datenbankmit glassfish und Netbeans Datenbankprogrammierung 18
Auf MySql Datenbank zugreifen funktioniert nicht Datenbankprogrammierung 8
TheSkyRider MySQL Datenbankzuordnung in Verbindung mit Java Datenbankprogrammierung 7
Warum funktioniert MySQL nicht Datenbankprogrammierung 8
M MySQL Datenbank in Array Datenbankprogrammierung 2
P MySQL- Neues Passwort Datenbankprogrammierung 1
btwX28 mysql abfrage über phpmyadmin Datenbankprogrammierung 8
sserio SQL oder MySQL Datenbankprogrammierung 44
OnDemand Mysql Query Builder Datenbankprogrammierung 1
Z MySQL "Too many connections" auch nach schliessen der Connections. Datenbankprogrammierung 10
yakazuqi MySQL MySQL Connection reset Datenbankprogrammierung 7
OnDemand MySql Foreign Key nötig oder unnötig Datenbankprogrammierung 3
M Mysql Views und Hibernate Caching Datenbankprogrammierung 4
W MYSQL Datenbank Login Android Datenbankprogrammierung 3
OnDemand MySQL und mongoDB wann macht was Sinn? Datenbankprogrammierung 11
bueseb84 Spring Boot : Update Mysql Datenbank Datenbankprogrammierung 1
Avalon Attribute werden mit Unterstrich in eine MySQL Datenbank eingetragen Datenbankprogrammierung 10
D MYSQL goorm IDE - Wie speichern? Datenbankprogrammierung 0
OnDemand Mysql UPDATE if condition Datenbankprogrammierung 14
D MySQL Geburtsdatum per KW abfragen Datenbankprogrammierung 1
C Java MySQL check if value exists in database Datenbankprogrammierung 2
H Fehler bei getConnection zu MySQL Datenbank Datenbankprogrammierung 18
J MySQL - Primary Key Date,Time vs ID Datenbankprogrammierung 16
ruutaiokwu MySQL: Messwerte, welche stagnieren interpolieren? Datenbankprogrammierung 2
S Datenbank MySQL und Java Datenbankprogrammierung 8
Thallius MySQL JDBC auf Linux Server zu mySQL DB auf anderem Linux Server wirft Access denied Datenbankprogrammierung 5
P Adressadministration mit Java und mySQL Datenbankprogrammierung 14
D MySQL Abfrage Datenbankprogrammierung 5
D MySQL Abfrage sortieren Datenbankprogrammierung 4
platofan23 MySQL Java Programm findet Treiber für mySQL auf Debian-Server nicht? Datenbankprogrammierung 11
J MySQL MySQL Risiken bei Stromausfall minimieren Datenbankprogrammierung 9
D MySQL Abfrage SUM datediff Datenbankprogrammierung 3
H MySQL MySQL - Keine Verbindung zur Datenbank?! Datenbankprogrammierung 4
G MySQL Problem mit MySQL verbindung Datenbankprogrammierung 8
X MySQL Java hat keinen Zugriff auf MySQL Datenbankprogrammierung 9
Z [JDBC][MYSQL] Access denied Datenbankprogrammierung 7
D MySQL Connection richtig herstellen. Wie ? Datenbankprogrammierung 7
D Multiple Connection mit MySQL Datenbankprogrammierung 4
D MySQL Eibinden des "mysql-connector" in eine fertige Jar Datenbankprogrammierung 3
L MySQL Android zu externer MySQL Datenbank verbinden Datenbankprogrammierung 5
P Daten in eine mySQL Datenbank einfügen Datenbankprogrammierung 4
D MySQL Zeilen kumulieren Datenbankprogrammierung 8
D MySQL Abfrage mit kumulierten Werten Datenbankprogrammierung 16
K Servlet-MySQL DB Datenbankprogrammierung 2
X MySQL Json String in MySQL einfügen. Datenbankprogrammierung 20
OnDemand Update auf Mysql läuft nicht durch Datenbankprogrammierung 30
K Java Object mit Hibernate in MySQL abspeichern Datenbankprogrammierung 1
D Datumsformat aus MySQL ändern Datenbankprogrammierung 15
G MySQL Java Problem: Nullpointer Exception obwohl Daten vorhanden sind? Datenbankprogrammierung 2
K MySQL LAN-MySQL Server mit XAMPP Datenbankprogrammierung 2
R ERModel der Datebanken (ORACLE,MySQL,MS-SQL usw) Datenbankprogrammierung 4
X MySQL In MySQL Funktionen erstellen, wenn Zelle leer dann andere Zelle ändern? Datenbankprogrammierung 9
K Anfängerfrage CSV in MySQL Datenbankprogrammierung 41
I MySQL Wert nachträglich bearbeiten Datenbankprogrammierung 1
N MySQL Datenbank lokal Datenbankprogrammierung 3
B MySQL: Port ändern über GUI? Wo und wie Port ändern? Datenbankprogrammierung 0
B MySQL installieren - silent / User anlegen Datenbankprogrammierung 3
X MySQL Verbindungdsaufbau MySql auf Ubuntu-Server Datenbankprogrammierung 10
F MySQL Wie kann ich in Java Datensätze aus einer MySQL Datenbank gezielt in einzelne Arrays schreiben? Datenbankprogrammierung 9
P MySQL JPA / MySQL - Fehler bei type=innoDB Datenbankprogrammierung 8
M MySQL MySQL DATETIME-Import Datenbankprogrammierung 9
P MySQL Connection Global Datenbankprogrammierung 13
J mySQL- Java Application - Zugriff über Internet Datenbankprogrammierung 3
P MySQL-Verbindung in anderer Klasse nutzen Datenbankprogrammierung 2
D JavaFX Anwendung zugriff auf MySQL DB. Datenbankprogrammierung 2
D MySQL Grundsätzliche Fragen zu MySQL Datenbankprogrammierung 3
B MySQL LogIn Daten im Code verstecken Datenbankprogrammierung 3
M MySQL-Syntax-Fehler Datenbankprogrammierung 1
M In MySql Datenbank schreiben Datenbankprogrammierung 6
D mySQL Timestamp in RegularTimePeriod bzw Second Datenbankprogrammierung 3
H SHOW Tables in Java/MySQL Datenbankprogrammierung 8
windl MySQL und HSQLDB Datenbankprogrammierung 4
S Anbindung zur mysql von mit Swing und AWT Datenbankprogrammierung 22
F MySQL+ Netbeans: Datenbanken mit Automatisch generierten Entity Classes get und set Datenbankprogrammierung 2
I MySQL Hibernate / MySQL alias in WHERE clause Datenbankprogrammierung 1
C MYSQL kann wert nicht eintragen Datenbankprogrammierung 3
D Aktualisierung einer ListView mit Daten aus MySQL-DB Datenbankprogrammierung 5
F BPlaced MySql Datenbank ansprechen Datenbankprogrammierung 5
S MySQL MySQL will einfach nicht, bitte um Rat Datenbankprogrammierung 4
M MySQL Datenbank durchsuchen Datenbankprogrammierung 5
Z MySQL mysql Facharbeit: Tipps und Ideen gesucht Datenbankprogrammierung 5
dat_vin JavaFX Datenbankverbindung über JPA und MySQL Error Datenbankprogrammierung 0
K MySQL Datenbank 2facher Zugriff Datenbankprogrammierung 1
Z MySQL Shopsystem mit mysql und Java Datenbankprogrammierung 8
S [MySQL] Topliste Datenbankprogrammierung 2
H Datenbank-Anbindung Java/MySQL Datenbankprogrammierung 2
T MySQL MySQL - Insert into fügt zwei identische Datensätze ein Datenbankprogrammierung 2
A Eine MySQL Zeile mit JDBC löschen Datenbankprogrammierung 5
J Dateien in MySQL speichern & indizieren Datenbankprogrammierung 2

Ähnliche Java Themen

Neue Themen


Oben