JTable-DB: Letzter wert wird nicht angezeigt.

loxol315

Neues Mitglied
hey ich habe ein programm zusammengestellt was eine tabelle die in einer DB gespeichert ist ausgibt und die ich verändern kann(zeile hinzufügen und speichern). wenn ich aber testwerte eingebe zb
priorität | aufgabe
1 | test1
2 | test2
3 | test3
4 | test4

und die daten speicher und dann das programm schließe und wieder öffne fehlt aber das "test4" dh der letzte wert der zweiten spalte wird nicht angezeigt
hier der ganze code:
Java:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Vector;

import javax.swing.table.*;

import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;
		
public class Projekt {
	Connection con = null;
	DefaultTableModel tabModel;
	JTable tab;
	
	
	
    public final static Vector COLUMN_IDENTIFIERS = new Vector() {//spalten festlegen
        {
            add("Priorität");							//spaltennamen werden in der tabelle hinzugefügt
            add("Aufgabe");
        }// new vector
    };//p f s vector

 public static void main (String args[]){
	Projekt p = new Projekt();
	 
	
 }// p s v main
 public Projekt(){

	 initDatabaseStuff(); 								//methode wird abgerufen
	 
	 Vector results = daten();							//results werden abgerufen

//#########################################################################################################    
	 tabModel = new DefaultTableModel(3, 2);			//erstellt 2 spalten und 3 zeilen
     tabModel.setColumnIdentifiers(COLUMN_IDENTIFIERS);	//tabelle mit defaulttablemodel wird erstellt
     													//defaulttablemodel wird benötigt um bei einer tabelle zeilen oder spalten hinzu zu fügen
	 tabModel.setDataVector(results, COLUMN_IDENTIFIERS);//daten werden in die tabelle geladen
	 
	 tab = new JTable(tabModel); 						//tabelle wird erstellt
	 tab.getTableHeader().setReorderingAllowed(false);	//spaltennamen lassen sich nciht verschieben
	 JScrollPane sP = new JScrollPane(tab); 			//ein feld mit einer scrollleiste wird erstellt und die tabelle in diese hineingeladen
//#########################################################################################################	 
	 TableRowSorter<TableModel> sort = new TableRowSorter<TableModel>();//der sortierer sort wird erstellt
	 tab.setRowSorter(sort);							//fügt sort der tabelle zu
	 sort.setModel(tabModel);							//
	 sort.setSortable(1, false);						//spalte 1 kann nicht sortiert werden
	 //sort.setSortsOnUpdates(true);					//wenn die eingabe gemacht wurde wird automatisch sortiert, false: es wird unübersichtlich
//#########################################################################################################	 
	 JPanel bP = new JPanel(); 							//panel für buttons wird erstellt
	 JButton addrow = new JButton("Zeile hinzufügen"); 	//button wird erstellt
	 //JButton delrow = new JButton("Markierte Zeile löschen"); //button wird erstellt
	 JButton save = new JButton("Speichern");			//button für die speicherung in die db
	 
	 bP.add(addrow); 									//button zum zeilen erstellen wird auf dem panel hinzugefügt
	 //bP.add(delrow); 									//button zum zeilen löschen wird auf dem panel hinzugefügt
	 bP.add(save);
	 
//##########################################################################################################	 

	 													//methode um eine zeile hinzu zu fügen mit dem actionlistener
	addrow.addActionListener(new ActionListener(){
		public void actionPerformed(ActionEvent e){
			Object[] newrow = {"",""};	//neue zeile 
			tabModel.addRow(newrow);					//neue zeile wird im jtable hinzugefügt
			try
		     {
		    	 Statement stmt = con.createStatement();
		    		 stmt.executeUpdate("INSERT INTO `projekt2`(`Priorität`, `Task`) VALUES ('','')");//sql befehl um eine zeile in der db einzufügen  		 		    		 										//x für zeilen anzahl wird hochgezählt
		     } //try
		    catch (SQLException ce)
			{
		    	System.out.println("Fehler: "+ce);		//übersicht
				ce.printStackTrace();
			}//catch
		}//public void actionperformed
	});//Addrow
	
	/*
	// methode um eine zeile zu löschen mit einem actionlistener
	delrow.addActionListener(new ActionListener(){
		public void actionPerformed(ActionEvent e){
			if (tab.getSelectedRow() != -1){
				tabModel.removeRow(tab.getSelectedRow());
			}
			else{
				if (tab.getRowCount()==0){				//wenn es keine zeilen gibt fürt ein eine errormeldung (s.u.)aus
					JOptionPane.showMessageDialog(tab, "Es sind keine Zeilen mehr vorhanden!", "Error", JOptionPane.ERROR_MESSAGE);//gibt eine fehlermeldung aus wenn keine zeilen mehr vorhanden sind
				}
				else{
					tabModel.removeRow(tab.getRowCount()-1);//wenn keine zeile markiert ist wird die letzte gelöscht
				}
			
			
			}
		
		//http://www.java-forum.org/java-basics-anfaenger-themen/37345-datenzeile-sql-db-java-loeschen.html
		}
		});
	
	*/
	save.addActionListener(new ActionListener(){		//funktion für den speichern butten, ruft die methode tabtoary auf
		public void actionPerformed(ActionEvent e){
			tabtoary();									//methode tabtoary wird aufgerufen s.u.
		}//public coid aciton performed
	});//save
	
//##################################################################################################	
	JPanel p = new JPanel();							// hauptpanel wird erstellt
	JFrame f = new JFrame("Taskliste"); 				// fenster wird erstellt
	p.setLayout(new BorderLayout()); 					//layout
	p.add(sP, "Center");								//scrollpanel wir auf dem hauptpanel hinzugefügt
	p.add(bP, "South"); 								//buttonpanel wird auf dem haupt panel hinzugefügt
	f.getContentPane().add(p); 							//panel wird auf dem fenster hinzugefügt
	f.pack(); 											//größe des fensters wird angepasst
	f.setVisible(true); 								//fenster erscheint
	
 }
 //#################################################################################################
 private void initDatabaseStuff() {						//connector
     MysqlDataSource mds = new MysqlDataSource();		
     mds.setServerName("localhost");					//addresse der datenbank
     mds.setPort(3306);									//standart port 3306				
     mds.setDatabaseName("projekt");					//name der datenbank unter der die tabelle zu finden ist
     mds.setUser("root");								//benutzername
     mds.setPassword("");							//passwaort (standart= null)
     try {
         con = mds.getConnection();
     }//try
     catch (SQLException e) {
         throw new RuntimeException(e);
     }//catch

     Runtime.getRuntime().addShutdownHook(new Thread() {//wenn du connection nicht besteht soll das programm geschlsosen werden?
         public void run() {
             try {
                 if (!con.isClosed()) {
                     con.close();
                 }//try
             } catch (SQLException e) {  
                 e.printStackTrace();
             }//catch
         }//public void run
     });//runtime
 }//private coid initdateabasestuff

 
 protected Vector daten() {								//daten werden abgerufen
	 
     Vector daten = new Vector();
     try {
         Statement stmt = con.createStatement();
         ResultSet rs = stmt.executeQuery("SELECT Priorität, Task FROM projekt2");//SELECT spaltenname FROM tabellenname

         while (rs.next()) {							//daten werden ausgelesen
             Vector inhalt = new Vector();
             inhalt.add(rs.getString("Priorität"));
             inhalt.add(rs.getString("Task"));
             daten.add(inhalt);							//daten werden in rs geschrieben
         }//while

     }//try 
     catch (SQLException e) {
         e.printStackTrace();
     }//catch

     return daten;										//results werden weitergegeben
 }//vector daten
 
 //##########################################################################################################
 private void tabtoary() {								//methode mit 2d array als string
     String[][] tabstr = new String[tab.getRowCount()][tab.getColumnCount()];//array wird erstellt mit den spalten und zeilen
     for(int zeile=0; zeile<tab.getRowCount(); zeile++){			
         for(int spalte=0; spalte<tab.getColumnCount(); spalte++){
             tabstr[zeile][spalte] = tab.getValueAt(zeile, spalte).toString();//table zum string
             System.out.println(tabstr[zeile][spalte]);	//dient zur übersicht
         }//for spalte
     }//for zeile
     try
     {
    	 Statement stmt = con.createStatement();
    	 int x = 1;
    	 for(int i=0; i<tab.getRowCount(); i++){
    		 stmt.executeUpdate("UPDATE `projekt2` SET `Priorität`='"+tabstr[i][0] // daten werden aktualisiert
    				 			+"',`Task`='"+tabstr[i][1]
    				 			+"' WHERE ID = "+x);
    		 System.out.println(x);						//übersicht
    		 x++;										//x für zeilen anzahl wird hochgezählt
    	 }//for
    } //try
    catch (SQLException e)
	{
    	System.out.println("Fehler: "+e);				//übersicht
		e.printStackTrace();
	}//catch
 }//private
     


}//class
und hier der teil bei dem die daten gespeichert werden:
Java:
private void tabtoary() {								//methode mit 2d array als string
     String[][] tabstr = new String[tab.getRowCount()][tab.getColumnCount()];//array wird erstellt mit den spalten und zeilen
     for(int zeile=0; zeile<tab.getRowCount(); zeile++){			
         for(int spalte=0; spalte<tab.getColumnCount(); spalte++){
             tabstr[zeile][spalte] = tab.getValueAt(zeile, spalte).toString();//table zum string
             System.out.println(tabstr[zeile][spalte]);	//dient zur übersicht
         }//for spalte
     }//for zeile
     try
     {
    	 Statement stmt = con.createStatement();
    	 int x = 1;
    	 for(int i=0; i<tab.getRowCount(); i++){
    		 stmt.executeUpdate("UPDATE `projekt2` SET `Priorität`='"+tabstr[i][0] // daten werden aktualisiert
    				 			+"',`Task`='"+tabstr[i][1]
    				 			+"' WHERE ID = "+x);
    		 System.out.println(x);						//übersicht
    		 x++;										//x für zeilen anzahl wird hochgezählt
    	 }//for
    } //try
    catch (SQLException e)
	{
    	System.out.println("Fehler: "+e);				//übersicht
		e.printStackTrace();
	}//catch
 }//private

ist mein erstes großes java programm, bin noch am lernen.
mfg loxol
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
B Wie kann ich eine Jtable mit Inhalt einer SQL Abfrage füllen Datenbankprogrammierung 14
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
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
N MySQL MYSQL Inhalt an JTable übergeben. Datenbankprogrammierung 11
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
V DB-Inhalt in JTable Datenbankprogrammierung 5
D Daten von Datenbank in JTable füllen... Datenbankprogrammierung 3
G JTable befüllen Datenbankprogrammierung 5
M Letzter Datensatz mit auslesen(brauch kleinen Tipp) Datenbankprogrammierung 15
H letzter Datensatz wird nicht gefunden? Datenbankprogrammierung 6
Z SQL Ergebnis in Integer Wert abspeichern Datenbankprogrammierung 3
DaCrazyJavaExpert Derby/JavaDB Wert einer Variable in der Datenbank direkt auf 1 setzten. Datenbankprogrammierung 71
I MySQL Wert nachträglich bearbeiten Datenbankprogrammierung 1
B SQL-Statement Prüfen ob eine Spalte einen Wert enthält Datenbankprogrammierung 2
Streeber MySQL Funktion gesucht, die angibt, wie oft ein Wert auftritt Datenbankprogrammierung 1
M Derby/JavaDB einen Null-Wert in die Datenbank schreiben Datenbankprogrammierung 7
C MYSQL kann wert nicht eintragen Datenbankprogrammierung 3
T Wie kann FS einen extra Wert bekommen? Datenbankprogrammierung 1
A Postgres, sql: Inkrementierung allgemein und bis zu einem bestimmten Wert Datenbankprogrammierung 5
AMStyles Kann Wert nicht speichern (MAX VALUE) Datenbankprogrammierung 9
E Wert '0000-00-00 00:00:00' in Datenbank vorhanden Datenbankprogrammierung 41
S ID Wert von Insert über jdbcTemplate.update Datenbankprogrammierung 3
M PL/SQL Fehler "Kein Wert zurückgegeben" Datenbankprogrammierung 4
S JPA NamedQuery mit Enum-Wert Datenbankprogrammierung 4
C Wert in SQL-Abfrage zählen lassen Datenbankprogrammierung 8
F H2:Wie kann man insert eine Reihe "int" wert als blob in table? Datenbankprogrammierung 12
I Tabelle mit "|" getrennten Werten -> einzelnen Wert davon abfragen Datenbankprogrammierung 15
M Ausgabe der Rows mit höchstem Wert X einer Gruppe y,z ? Datenbankprogrammierung 2
G HQL maximalen Wert Datenbankprogrammierung 2
F Wert des erzeugent Schlüssel ausgeben lassen Datenbankprogrammierung 2
turmaline Default sort Wert Datenbankprogrammierung 3
W MySQL Rückgabewert wenn Wert nicht in DA Datenbankprogrammierung 7
M MySQL MySQL Updat - updatet falschen wert Datenbankprogrammierung 3
S DB auf Wert überprüfen Datenbankprogrammierung 13
O eine Tabelle hat mehrere PrimKey mit dem selben Wert Datenbankprogrammierung 9
S Daten einer Tabelle vergleichen und ggs neuen Wert einfügen Datenbankprogrammierung 8
E Wert mit letztem Datetime bekommen Datenbankprogrammierung 2
raptorrs Wert zu Zelle hinzu addieren Datenbankprogrammierung 2
B Suche Query um genau einen Wert einer def. Gruppe aus einer Tabelle zu erhalten. Datenbankprogrammierung 2
P jeden 20 Wert rausholen Datenbankprogrammierung 8
S SQL: Spalte kopieren plus Wert erhöhen Datenbankprogrammierung 4
E Wert in Tabelle nicht loeschen, sondern umbenennen? Datenbankprogrammierung 2
L oracle:ORA-01008: Nicht allen Variablen ist ein Wert zugeord Datenbankprogrammierung 1
P Wie übergebe ich einen NULL Wert in meinem Java-Programm? Datenbankprogrammierung 7
G ResultSet - Wert überprüfen Datenbankprogrammierung 6
V MAX Wert und weitere auslesen Datenbankprogrammierung 2
N Funktion um einen Wert in einem ResultSet zu finden ? Datenbankprogrammierung 5
R Einen Integer-Wert aus einer MySQL DB auslesen Datenbankprogrammierung 2

Ähnliche Java Themen

Neue Themen


Oben