From ccd7960a2d8af8b1b7aadb5e706e27b04dd3a918 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Paul=20K=C3=B6ster?= <IA21A.Koester.Paul@bk-hennef.de>
Date: Sun, 19 Mar 2023 13:04:48 +0100
Subject: [PATCH] start

---
 .../IDB-Hue-Projekt/Hinzufügen.class          | Bin 5832 -> 6161 bytes
 out/production/IDB-Hue-Projekt/Löschen.class  | Bin 2534 -> 2668 bytes
 src/Datail.java                               |   8 +-
 src/Einzelansicht.java                        | 181 ++++++++++--------
 src/Hinzufügen.java                           |  28 ++-
 src/Löschen.java                              |  12 +-
 src/Menü.java                                 |   5 +-
 src/Suchen.java                               |  23 +--
 8 files changed, 156 insertions(+), 101 deletions(-)

diff --git a/out/production/IDB-Hue-Projekt/Hinzufügen.class b/out/production/IDB-Hue-Projekt/Hinzufügen.class
index 12b135b4714d2cb2588a3abe5f3e026ec474b584..f02c6ec32bf187b6ba213365a84cbc9f96b787b4 100644
GIT binary patch
delta 2092
zcmZ`)YgANK6#n)M_uhG27#IZ_L>NtEKyXkLWzaO=nU55+w3T_4S%6FfGNXvqnlkH0
zR$|x8C`-{qO-+0t(pvb#a#gDrnOSDpi>$QFuq-ucpF3*#qaSzAKIiPS_jk_zzB6y-
zuFA8$bEUNnzzFg++0IM(Hmtyt3Z7E&G%5)33$(?WH=qSey~W|`@?a@J4)}wm;W8&o
zs8g{D&*&C8)zsIc-zvHELQ7o1YJz=~KNLQ+DO_Ia4=PwgNEUgPctbUu!aH$lRk*w|
zc!w7B+wd&bs(2ptdWAA0)`}OgPQgnmUdDR8R?fFKV55RfDqg{6eZTBZA;frY%bMwg
z8Ffy?V5@+zjWE=scd0$~Nm3kRP+d+)*y@BVjDoE;G~hLnq)0!ixRq7dOPCnlVT*N&
zU3&^GvngW5dw5^L2P!^9J0W&#d2p$pPai6uUlt}%HKF??<4Qsc1K#QW(4s)N*dH#k
zL&FgjALA(F3uqyZHG8sVi|J!3J{319m-@rgD{E|A;kb&=v6)~Ag|%RbRvotB3qp@E
z+IV-F7Iyo?HCo6W6eZoI{)&KBRmBk}3CcKsS-@Z2OI+I5D!#$DgoIF8WzA%ND5RD8
z$CPV<O774weVO8uvSupi(AQXd>&L8}syVF9BS@7sL4UR0W_9VEwp6;J$J>*obA)t{
zKG~kCPq3ddQLH{d)g08#M%^h<p(K@(>83p!R5N)A4vBi$V4+l%;*3$67^SOZBC|uL
zUN-7YH!IYKyFwZIk=QpVQ*VnKl%K^HK<+7v0s#y4BbbORl*@NTnUrY}i6!CXSZDy>
z91%PDdRLs63Usd{J7y>$P49|L(;sj+&EG-M*E&W>--B>!&k4t2^8UaCZbg5#qT32o
zSdaiKl3+tB?C8xi9>iiO5-|!%dV4~8B!el@7n_lZZM@ckEF3~MH>V%kk%JE8;y3gs
zz)Ok9qh1(59t<Qe@@WVLQ4t2yNMzGE6jCvKG#^D2#4uWd;j|35&}!7sIy^}0QA-V2
zO55=eeq?;h8AUrP@lyn+8C(bMVR&cwJB)|%GtXHW(gpm&p2Wa9ah5%q;dS6woa3V%
z!f^(6nlHV9_jlqv$ANa>cl^QWg~!b0n-SgxxLBmZ`xAe$V1#!OmsmBI5dn%Ib#Yyr
z0*eAo!3qU`6On>0;{BIUdr<_;f^<UwI3Qx@3Nu9!oZ_N``QtjECc_ckkOc%RGtQh8
zUAzX7S2~Fzpm>vDO*DsD2-eCe>S79{M5#vuF0qX%S&xl5iPFGkJl>2a>fxvCy@*Ye
zV&)z|m5F=4l3T8u<rX|wAn(QtiE=YGB+B*3&E~+=Rx|?pkSYf0H|`vTEn+FX5sqwU
ziii=Ghx3e`SBtjd)&EO?E&9Q3Ns;aUyS~H7&!Da!U?&&z$*<#)SuS}$9zD2RqQ)+X
zBLuu=?2LM;?B!ks%qQ3l_(Y6L;(7APyprVH=S*qAexK~p*L6>h?8dtX@DbrI!})||
zHMa$yHKLDCA?FF_m*y6H6+K?`s0IQ>AZX&&Sebukv5WGkf+-wfo`?q4vp9f}ygHht
zG!|(X2Oq|>d?v7+h#9yY3o!*Xm>OYjPh<KPV>M4V;cmRitU1ZlK7;!>^}S5oIn1Y#
zOe>A-n8%8mPZ=noTyAI{%4s+ju#zfh8Ul1Df;0z}RDnedr;4hukZMuQgbC4O2-8X|
zzOE!6MpFzTLLuj1BZ*}8%(!AGN#c|lq>u#)Cr)9FwX<rfkWLb-MiE@QMoIRBrUaqu
z44nzp)EW8_s;Lu%<+mz>AzE2e5`&&gHa?2XO5!Ukfc-K*TbFS^U4-3~mpfI#F1sP0
z02G#w5S0)ZsfNtj3=z3m0Q`tX1%ToFD?}t^H{<Ppg=8}((^<3b|A<MthMZN?S;FAN
ztLfm~CW@zoXyb_gBgsW6{6)Q<?72bI*RUSLW*augu>B32XV`%>2;c{XXfO?-Lb(0`
DNFBuE

delta 1685
zcmYk6eUyx47{;%AX5No^=bfD~YjzA{cM^8(hxM^Ovaw60Q2r?G37s-nA}t5SaZYCx
z$0_uoM<u1UO;&~2m9(9sKXjZ*ib`LiRGUhrLQ1k-&%3Gqn0xN$x!>n{uJ?X^@3X4U
z8)eR0=Ua9GsFEJroKuDqgAXfQti*k)ubEOytjf-QtcW3?gMk%6JOpK7wTp-GhzeW%
zLu>Gug|#joN2MBLr9%$Z;YkZmxu{n`Gwqsa(0b1ZdKRhSMpA9H+>SP$6@*6A&YQn`
z{rnlzYwIjDs(Z|oy#dd;cpfjPP3E{f2WzldD{m15ibnOSiNQjHI%uV>mDnyAU8MFq
z2~}_R)S}H-*ki?SVV_##bn9wNo13|<R?zY4nVCB>3(My%m{B*qeDp{?Td8(Br&Uuh
znIrJe&rB8=vlrCW&Q<$E`SP7Q5lR?`1O-K^)J>^E_m~gAt7teA!FdO50!zddpZJ>>
zhy7BH;}Jtl2ew!){_sXYJ#t+9h@T>+xQ>J+$C3!!AW_wn^Lk;7?<0j$XiG<dPsEly
zdeAeawsfK?5hk70f=ER;B`_sD_V!t`Y{^$gBIR<C%83>SE*9jg4$*uyAsP$44V#Df
z4&DXS>}Zv-AA$qT&Cxwl{vHc0=*^hR?gin(K?j78$1H^~x*-Qeh+r^hMj)X!#tO3C
z(SRP<fSx>xLhNLHH+o?oig5rXXhkW0MVSD-B@X&QA1Oj#wxXX5LVu}5g;b-LjKm<h
z4ufS1E|EG6k%g#~yK$+k#xz-nnNp8iqyaNz6K=)(^tY654q!Gu$l@SPwqhb}e#qY*
zEXGHi3)0dVe9X+Cv6J|OnMr%C_!Niua=ZEe8Ru-uIyj6Yd=9c1pW_S4>+C4LWM_2t
z6_P|<XJ4~xelKgqHw66{+k#3MZQR$fU|YyoSZCo|5wY;SI+~lvdP8uS4N<QK$92EC
z#Q^@O3fbl*y7#8u5OcgY%xf=RFvQAX`~ZpiG%D>9zIvJtQlTm^(1;sd8gP&?Ftr{P
z#l_o^DvcZcb{JUJg5@d|Pj<Q=cnJlK==)z)7a!2Y?1Nsh39GzSShfR?{+m6qmLEM8
z!*L@p=@rcJk&>r@*m}RY6B`GbTopHWU{l;&i(F5<1uts7R3pqrbZSIoi1{k+8lN;@
z#*){T8q(NS!bOxU;66Ibr(dRJdP;k5K@%{<U@2*EUfmln%4!+Qld-hSHg+h;gM1TP
z#gTI9hb#|A_i+*O8Hci3MSiQv=Wz0R8JmAOyE_th;z}&XRYYVIwqP`xF@`$V@DOXL
zHV%7nJ<%9SP;MYF<8cBL(1z?p9^#GS;3i4nW=Ug`lpsTtr*iAbQh_Nl47LB_xdCY|
z)YR=IVL#&+W_}W>=`^@H!VlvlFNhLy6e4Rj74&mQNGFf<!of4soDz&IQw^_1vC4x|
zqgdr}5um?noFb?O4GzF*{KoB$u?qv>oZ}@itn3`Fm9y}Tu&_0BRwG*ji^ytDJ!a2%
zaaTL3#Ekb-J7#PIZyw$jixO^Dx7YE|ETHf7|4=n9I3|=Hs(jnCeA<UUagP7hJdVHU
pBp`+a{>f~P_*F;;FXnnN?!|-`lV0rN#ja8S??w_yOE>9`<lm0uVKx8&

diff --git a/out/production/IDB-Hue-Projekt/Löschen.class b/out/production/IDB-Hue-Projekt/Löschen.class
index fcb9e2f635014d43514cc02564cb9250fef634fe..72f90b1fd57e45adb743095d54e8cedf721242c6 100644
GIT binary patch
delta 727
zcmZXQOHWf_5Qd+x?K$7^w5cG19yE%C1>glqST!ap8X^}_5y2vY1u7S7i*31ht#|Q)
z#+-#=W8%VKVq$_Cp_<4-;=+}Gz%48O02^`Ig)wn6mv?5~d1sc3RyNu{et-T7?C05>
zz2MDQqsi#_aAGW_@K#oJ`Dvgfz)@Ni=3q44mYB#F8f~gM9^eFR3M-Y4#0MhDw8B@}
zSk;jmY7cOVCIRBn$+VveIs=@>R2coSL@KK3QWT9u#v?VcNPMuSeJGiji1fw$QJXN`
z0nXCndVIUpId`wGRQ0*dzU}@90|5+r6s_(7@8%EFzIvrDyFZO$b=6%qjs$Po+~T(8
zPJmkOy8Fx}b>CIGPffW4dY5|aKG)U0X~j18mAT2ynA-iN%L}6@&VyPJZcARV<Q7<^
z>aDxeYRJq`_@0AVniUHio5jgzClxaU|0y`ecd8vDONU~XvXGerO8x?YkakQ*f8vZ|
zF3z$(WPBkKc8q!Y7w7O&$rLZ-?w7pgjrc8mWS(BU83sjA6C1?(@v#n@ASJAqmI4_o
zlsk*57bJ|s0Hq|Qa-FS0SSFMOLR2nPWn|gGH<=g`rf%V>rITSsFlD-dLmWm+^$8b<
z$s4k==OS@3M(!UZ7!{w3F3Eb8kCLSD<fAlWazhF47-x@&oDj4HYfZFR8e21|32Ck<
zO@*dT%RW{qZq<a>M4|q_CyexltyStg^_pJ4&|ec$k6d;`d{Cl{$heoc4|ph;E%_tS
H{}ksB^0<ra

delta 589
zcmZ9J%TE(w6vcmEJ2T%n9b2?o7)&Zr6OpLMwhJ}Y7!$BQ%EMNCOtDn37J&j4A60zB
zm5KS{Qn&1k#KdPJ8{@)%z=erRSN;QT#7h@0%p~`oId{%E_hx==`I+>-{`v3;IK+b$
z?_G4KRVz2@ifH$qVvJo3_?*B|*kjeH*|O%OB56V^>3QTh?Q@2_8L;-LA+u<8suA<d
z+8!IG;A4|l<jmn{$LnuaR<+j@ZIj`A*jo*2mEL@PW};TnTsH@t<MBC<c@{JcpFVDw
zN6u$;)AZ|-x@}(Sz3Q&{u6wK{McVw(X|vniv8jmS9H>{4<I46gOwsLB56zr=tT__c
zU+4+!_w*~4>B>0kMCu>mXLR5M`VFT7XLXrG#{S4~A+X<ac6Eg)-ISP?>l!p!lD>^6
zJY`TOqmp!xgwz-o8}Qgjinx4{5LKHjznN^4Bn7sLNlI)IBJL1*3PU^3NpoK0qayB;
z=K>dT$kN3Tj-th6oJ)jqlo9h1V}j&3E>o7ij>aWUwNQmCL|SNqNm(w%W3IBF1&gZC
zS)4V=cQl^nnkJ)}Qd<6~l-!yutN)(}-x|8ViDWf{F)^JMrwB95N{<VwOZZ}|-r|mM
Lp1e1?$9;mou)k+W

diff --git a/src/Datail.java b/src/Datail.java
index b2760cc..140c610 100644
--- a/src/Datail.java
+++ b/src/Datail.java
@@ -1,12 +1,12 @@
 import javax.swing.table.DefaultTableModel;
-import javax.swing.table.TableModel;
 import java.sql.*;
 
 public class Datail {
     public static ResultSet spieler(int verein, Connection con) {
+        //liefert das Resulset mit allen Spielern des Vereins
         try {
             Statement s = con.createStatement();
-            ResultSet r = s.executeQuery("SELECT * FROM Spieler WHERE Vereins_ID = " + verein);
+            ResultSet r = s.executeQuery("SELECT * FROM Spieler WHERE Vereins_ID = " + verein +" ORDER BY Spieler_Name");
             return r;
         } catch (SQLException e) {
             throw new RuntimeException(e);
@@ -15,10 +15,11 @@ public class Datail {
     }
 
     public static DefaultTableModel detailmodel(DefaultTableModel t,int verein, String url) {
+        //Füllt das mitgegebene Tabelmodel mit den Daten der Spieler
         String[][] temp = {{""}};
-        System.out.println("test = "+verein);
 
         try (Connection conn = DriverManager.getConnection(url, "root", "")) {
+
             ResultSet r = spieler(verein, conn);
             ResultSetMetaData rm = r.getMetaData();
             rm.getColumnCount();
@@ -44,6 +45,7 @@ public class Datail {
         } catch (SQLException e) {
             throw new RuntimeException(e);
         }
+        //Gibt das Tabelmodel zurück
         return t;
     }
 }
diff --git a/src/Einzelansicht.java b/src/Einzelansicht.java
index 932c0d9..9c980ab 100644
--- a/src/Einzelansicht.java
+++ b/src/Einzelansicht.java
@@ -9,33 +9,31 @@ import java.awt.event.KeyEvent;
 import java.awt.event.KeyListener;
 import java.sql.*;
 
-public class Einzelansicht extends JFrame implements TableModelListener, ActionListener {
+public class Einzelansicht extends JFrame implements ActionListener {
 
     JScrollPane sc = null;
     JButton a = null;
     JButton einf = null;
     JButton del = null;
-    static JButton zur = null;
-    static JButton vor = null;
+    JButton zur = null;
+    JButton vor = null;
+    JButton ch = null;
+    JButton sz = null;
     static ResultSetMetaData rm = null;
     static DefaultTableModel t = new DefaultTableModel();
     static JTable table = new JTable(t);
     static ResultSet r = null;
     static String url = "jdbc:mariadb://127.0.0.1:3306/bundesliga";
-
     JTextField s = null;
-    String tab = null;
-
+    static String tab = null;
     JLabel such = null;
-
     Font font = new Font("Arial", Font.PLAIN, 12);
-    String sql = null;
+    static String sql = null;
     JMenuBar bar = null;
     JMenu dat = null;
     JMenu bew = null;
     JMenu adm = null;
     JMenuItem i1, i2, i3, i4, i5, i6, i7;
-
     static DefaultTableModel dtm = new DefaultTableModel();
     static JTable detail = new JTable(dtm);
     static JScrollPane dsc;
@@ -43,6 +41,7 @@ public class Einzelansicht extends JFrame implements TableModelListener, ActionL
 
 
     public Einzelansicht(String ta) {
+        //Frameeigenschaften werden deklariert
         this.setSize(600, 800);
         this.setResizable(false);
         this.setLayout(null);
@@ -50,10 +49,13 @@ public class Einzelansicht extends JFrame implements TableModelListener, ActionL
         tab = ta;
         this.setTitle(tab);
 
+        //Menüs für Menüleiste deklarieren
         bar = new JMenuBar();
         dat = new JMenu("Datei");
         bew = new JMenu("Bewegen");
         adm = new JMenu("Administration");
+
+        //Menüitems mit Namen versehen und aAtionen hinterlegen
         i1 = new JMenuItem("Programm schließen");
         i1.addActionListener(e -> {
             this.dispose();
@@ -68,7 +70,7 @@ public class Einzelansicht extends JFrame implements TableModelListener, ActionL
 
         i3 = new JMenuItem("Vorheriger Datensatz");
         i3.addActionListener(this);
-        i3.setActionCommand("zur");
+        i3.setActionCommand("rück");
 
         i4 = new JMenuItem("Suchen");
         i4.addActionListener(e -> {
@@ -90,6 +92,7 @@ public class Einzelansicht extends JFrame implements TableModelListener, ActionL
         i7.addActionListener(this);
         i7.setActionCommand("lösch");
 
+        //Menüitems an Menüs binden
         dat.add(i1);
         bew.add(i2);
         bew.add(i3);
@@ -103,19 +106,8 @@ public class Einzelansicht extends JFrame implements TableModelListener, ActionL
         this.setJMenuBar(bar);
 
 
-        try (Connection conn = DriverManager.getConnection(url, "root", "")) {
-            Statement s = conn.createStatement();
-            sql = "Select * From " + tab;
-            r = s.executeQuery(sql);
-            rm = r.getMetaData();
-            r.first();
-            einfügen(r);
-
-        } catch (SQLException e) {
-            throw new RuntimeException(e);
-        }
-
-        vor = new JButton("Weiter");
+        //Buttons
+        vor = new JButton("Vorwärts");
         vor.setBounds(350, 150, 90, 50);
         vor.setFont(font);
         vor.setBackground(Color.white);
@@ -124,23 +116,17 @@ public class Einzelansicht extends JFrame implements TableModelListener, ActionL
         vor.setActionCommand("vor");
         this.add(vor);
 
-        zur = new JButton("Letzte");
+        zur = new JButton("Rückwärts");
         zur.setBounds(80, 150, 90, 50);
         zur.setFont(font);
         zur.setBackground(Color.white);
         zur.setForeground(Color.black);
         zur.addActionListener(this);
-        zur.setActionCommand("zur");
+        zur.setActionCommand("rück");
         this.add(zur);
 
-
-        sc = new JScrollPane(Einzelansicht.table);
-        sc.setBounds(50, 100, 400, 50);
-        sc.getHorizontalScrollBar();
-        this.add(sc);
-
         a = new JButton("Zurück");
-        a.setBounds(50, 30, 80, 50);
+        a.setBounds(50, 30, 80, 30);
         a.setForeground(Color.BLACK);
         a.setBackground(Color.white);
         a.setFont(font);
@@ -149,7 +135,7 @@ public class Einzelansicht extends JFrame implements TableModelListener, ActionL
         this.add(a);
 
         einf = new JButton("Einfügen");
-        einf.setBounds(470, 50, 100, 50);
+        einf.setBounds(470, 20, 80, 30);
         einf.setForeground(Color.BLACK);
         einf.setBackground(Color.white);
         einf.setFont(font);
@@ -157,9 +143,18 @@ public class Einzelansicht extends JFrame implements TableModelListener, ActionL
         einf.setActionCommand("einf");
         this.add(einf);
 
+        ch = new JButton("Ändern");
+        ch.setBounds(470, 80, 80, 30);
+        ch.setFont(font);
+        ch.setBackground(Color.white);
+        ch.setForeground(Color.black);
+        ch.addActionListener(this);
+        ch.setActionCommand("änd");
+        this.add(ch);
+
 
         del = new JButton("Löschen");
-        del.setBounds(470, 120, 100, 50);
+        del.setBounds(470, 140, 80, 30);
         del.setForeground(Color.BLACK);
         del.setBackground(Color.white);
         del.setFont(font);
@@ -167,6 +162,26 @@ public class Einzelansicht extends JFrame implements TableModelListener, ActionL
         del.setActionCommand("lösch");
         this.add(del);
 
+        sz = new JButton("Zurücksetzen");
+        sz.setBounds(185, 10, 105, 30);
+        sz.setForeground(Color.BLACK);
+        sz.setBackground(Color.white);
+        sz.setFont(font);
+        sz.addActionListener(e -> {
+            standart(1);
+            this.remove(sz);
+            this.repaint();
+        });
+
+
+        //Mastertabelle in Scrollbar
+        table.setCellEditor(null);
+        sc = new JScrollPane(Einzelansicht.table);
+        sc.setBounds(50, 100, 400, 50);
+        sc.getHorizontalScrollBar();
+        this.add(sc);
+
+        //Jlabel und JTextfield für die Suche
         such = new JLabel("Suchen");
         such.setBounds(300, 10, 50, 20);
         this.add(such);
@@ -176,19 +191,34 @@ public class Einzelansicht extends JFrame implements TableModelListener, ActionL
         this.add(s);
         suchen();
 
-        t.addTableModelListener(this);
-
-
+        //Detailtabelle in Scrollpane
         detail.setAutoCreateRowSorter(true);
         dsc = new JScrollPane(detail);
         dsc.setBounds(20, 250, 550, 400);
         dsc.getHorizontalScrollBar();
         this.add(dsc);
 
+        standart(1);
 
     }
 
+    public static void standart(int row) {
+        //Alle Datensätze in das Resultset und an bestimmter Position anzeigen
+        try (Connection conn = DriverManager.getConnection(url, "root", "")) {
+            Statement s = conn.createStatement();
+            sql = "Select * From " + tab;
+            r = s.executeQuery(sql);
+            rm = r.getMetaData();
+            r.absolute(row);
+            einfügen(r);
+
+        } catch (SQLException e) {
+            throw new RuntimeException(e);
+        }
+    }
+
     public static void einfügen(ResultSet r) {
+        //Datensatz an bestimmter Position des Resultsets in die Tabele einfügen
         String[][] temp = {{""}};
 
         try {
@@ -209,6 +239,7 @@ public class Einzelansicht extends JFrame implements TableModelListener, ActionL
             t.addRow(rows);
             t.fireTableDataChanged();
 
+            //Methode für die Detailtabelle
             vid = r.getInt(1);
             detailtab(vid);
 
@@ -220,7 +251,7 @@ public class Einzelansicht extends JFrame implements TableModelListener, ActionL
     }
 
     public void suchen() {
-
+        //Bei dem bestätigen der Suchanfrage mit Enter wird die Suche gestartet und die ergebnisse als Resultset angezeigt
         s.addKeyListener(new KeyListener() {
             @Override
             public void keyTyped(KeyEvent e) {
@@ -228,6 +259,8 @@ public class Einzelansicht extends JFrame implements TableModelListener, ActionL
                     r = Suchen.search(s.getText(), r);
                     s.setText("");
                     einfügen(r);
+                    Einzelansicht.this.add(sz);
+                    Einzelansicht.this.repaint();
                 }
             }
 
@@ -243,47 +276,12 @@ public class Einzelansicht extends JFrame implements TableModelListener, ActionL
         });
     }
 
-    @Override
-    public void tableChanged(TableModelEvent e) {
-        int zeile = table.getSelectedRow();
-        int spalte = table.getSelectedColumn();
-        if (spalte > 0) {
-            int response = 0;
-            try {
-                response = JOptionPane.showConfirmDialog(null, "Wollen Sie dein Eintrag in Zeile " + (zeile + 1) + ", Spalte :" + (rm.getColumnName(spalte + 1)) + " ändern?", "Bestätigen", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE);
-            } catch (SQLException ex) {
-                throw new RuntimeException(ex);
-            }
-            if (response == 0) {
-                try (Connection conn = DriverManager.getConnection(url, "root", "")) {
-                    Statement s = conn.createStatement();
-                    System.out.println(t.getColumnName(spalte) + "\n" + rm.getColumnTypeName(spalte + 1));
-                    if (rm.getColumnTypeName(spalte + 1).equalsIgnoreCase("Varchar")) {
-                        ResultSet r = s.executeQuery("Update " + tab + " set " + t.getColumnName(spalte) + "= '" + t.getValueAt(zeile, spalte).toString() + "' WHERE " + t.getColumnName(0) + " = " + t.getValueAt(zeile, 0));
-
-                    } else if (rm.getColumnTypeName(spalte + 1).equalsIgnoreCase("Date")) {
-                        ResultSet r = s.executeQuery("Update " + tab + " set " + t.getColumnName(spalte) + "= '" + t.getValueAt(zeile, spalte).toString() + "' WHERE " + t.getColumnName(0) + " = " + t.getValueAt(zeile, 0));
-
-                    } else {
-                        ResultSet r = s.executeQuery("Update " + tab + " set " + t.getColumnName(spalte) + "= " + t.getValueAt(zeile, spalte).toString() + " WHERE " + t.getColumnName(0) + " = " + t.getValueAt(zeile, 0));
-
-                    }
-                    table.clearSelection();
-                } catch (SQLException f) {
-                    throw new RuntimeException(f);
-                }
-                t.fireTableDataChanged();
-            } else {
-                table.clearSelection();
-            }
-
-        }
-
-    }
 
     @Override
     public void actionPerformed(ActionEvent e) {
         String command = e.getActionCommand();
+
+        //Aktionen des Menüs und der Buttons
         switch (command) {
             case "vor":
                 try {
@@ -295,27 +293,52 @@ public class Einzelansicht extends JFrame implements TableModelListener, ActionL
                     throw new RuntimeException(ex);
                 }
                 break;
-            case "zur":
+            case "rück":
                 try {
                     if (r.previous()) {
                         einfügen(r);
-                        vid = r.getInt("V_ID");
                     }
                 } catch (SQLException ex) {
                     throw new RuntimeException(ex);
                 }
                 break;
             case "einf":
+                //Ein Objekt der Klasse Hinzufügen wird erzeugt und ein Modaler Dialog wird angezeigt
                 Hinzufügen d = new Hinzufügen(r, tab, this, true);
                 d.setVisible(true);
 
                 break;
             case "änd":
+                int spalte = table.getSelectedColumn();
+                //ist die ausgewählte Spalte > 0 dann wird der Datensatz nach bestätigung geändert
+                if (spalte > 0) {
+                    try (Connection conn = DriverManager.getConnection(url, "root", "")) {
+                        Statement s = conn.createStatement();
+                        String eingabe = JOptionPane.showInputDialog(t.getColumnName(spalte), r.getString(spalte + 1));
+                        if (eingabe != null) {
+                            System.out.println("test");
+                            ResultSet ra = s.executeQuery("Update " + tab + " set " + t.getColumnName(spalte) + "= '" + eingabe + "' WHERE " + t.getColumnName(0) + " = " + r.getString(1));
+                            standart(r.getRow());
+                        }
+                        table.clearSelection();
+                    } catch (SQLException f) {
+                        JOptionPane.showMessageDialog(null, "Da hat etwas nicht geklappt", "Fehler!", JOptionPane.ERROR_MESSAGE);
+                        table.clearSelection();
+                        throw new RuntimeException(f);
+                    }
+                    t.fireTableDataChanged();
+                } else {
+                    JOptionPane.showMessageDialog(null, "Wählen Sie bitte eine Zelle der Tabelle aus. \n Die " + t.getColumnName(0) + " ist nicht veränderbar.");
+                    table.clearSelection();
+                }
+
                 break;
             case "lösch":
-               Löschen l = new Löschen(tab,t,table);
+                //Ein Objekt der Klasse Löschen wird erzeugt
+                Löschen l = new Löschen(tab, t, table);
                 break;
             case "close":
+                //Die Einzelansicht schließt sich und man kehr tins Hauptmenü zurück
                 this.dispose();
                 Menü m = new Menü();
                 m.setVisible(true);
@@ -326,10 +349,10 @@ public class Einzelansicht extends JFrame implements TableModelListener, ActionL
     }
 
     public static void detailtab(int vid) {
+        //Tabelmodel wird an die Methode weitergegeben und für die ansicht der Spieler verändert
         Datail.detailmodel(dtm, vid, url);
         dtm.fireTableDataChanged();
 
-
         System.out.println("detail =" + vid);
 
 
diff --git a/src/Hinzufügen.java b/src/Hinzufügen.java
index c45d9e2..04b467a 100644
--- a/src/Hinzufügen.java
+++ b/src/Hinzufügen.java
@@ -3,10 +3,7 @@ import java.awt.*;
 import java.awt.event.*;
 import java.sql.*;
 
-import static javax.swing.WindowConstants.DISPOSE_ON_CLOSE;
-
 public class Hinzufügen extends Dialog implements ActionListener {
-    JFrame frame;
     JButton a = null;
     ResultSetMetaData rm = null;
     JButton einf = null;
@@ -17,12 +14,14 @@ public class Hinzufügen extends Dialog implements ActionListener {
 
 
     public Hinzufügen(ResultSet r, String tab, JFrame owner, boolean modal) {
+        //Ein Modaler Dialog braucht einen Owner, in dme Fall der Frame
         super(owner, modal);
 
-
+        //Framesettings
         this.setSize(500, 600);
         this.setLayout(null);
 
+        //Button um den Vorgang abzubrechen
         a = new JButton("Zurück");
         a.setBounds(50, 30, 80, 50);
         a.setFont(font);
@@ -33,6 +32,7 @@ public class Hinzufügen extends Dialog implements ActionListener {
         });
         this.add(a);
 
+        //Es wird für jede Spalte der Tabelle ein Textfeld und ein Bezeichner (JLabel) erzeugt
         try {
             rm = r.getMetaData();
             int x = 10;
@@ -53,29 +53,38 @@ public class Hinzufügen extends Dialog implements ActionListener {
                     y = 300;
                 }
             }
+            //Der Button zum Bestätigen der Eingabe
             einf = new JButton("Einfügen");
             einf.setBounds(50, 480, 100, 50);
             einf.setFont(font);
             einf.setForeground(Color.black);
             einf.setBackground(Color.white);
             einf.addActionListener(e -> {
+                //Erst wird jedes Textfeld durchgegangen und unterschieden, ob die eingabe Null ist oder nicht
                 for (int i = 1; i < z; i++) {
                     try {
+                        //Ist die letze Spalte bzw Textfeld erreicht dann wird Folgendes ausgeführt
                         if (i == z - 1) {
+                            //Wenn ein Textfeld Null ist, dann wird der User gefragt, ob er dies so übernehmen möchte
                             if (b[i].getText().length() == 0) {
                                 int response = JOptionPane.showConfirmDialog(null, "Soll der Wert für " + rm.getColumnName(i + 1) + " 'NULL' übernommen werden?", "Bestätigen", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE);
                                 System.out.println(response);
                                 if (response == 0) {
+                                    //Der Wert Null wird übernommen
                                     spalten = spalten + " Null";
                                     sname = sname + rm.getColumnName(i + 1);
                                 } else {
-                                    einf.setAction(null);
+                                    //Der Wert Null wird nicht übernommen
+                                    spalten ="";
+                                    sname="";
                                 }
                             } else {
+                                //Um dem SQL-Syntax gerecht zu werden hat der letzte Wert kein ','
                                 spalten = spalten + "'" + b[i].getText() + "'";
                                 sname = sname + rm.getColumnName(i + 1);
                             }
                         } else {
+                            //Liefert das Textfeld Text bzw Werte, dann werden Strings gefült
                             spalten = spalten + "'" + b[i].getText() + "',";
                             sname = sname + rm.getColumnName(i + 1) + ",";
                         }
@@ -90,12 +99,20 @@ public class Hinzufügen extends Dialog implements ActionListener {
                 String sql = "Insert into " + tab + "(" + sname + ") Values (" + spalten + ")";
                 System.out.println(sql);
                 Connection conn = null;
+
+                //Der Eintrag wird in die Datenbank eingefügt
                 try {
                     conn = DriverManager.getConnection(url, "root", "");
                     Statement s = conn.createStatement();
                     ResultSet a = s.executeQuery(sql);
                     this.dispose();
+                    //Der eingefügte Datensatz wird angezeigt
+                    Einzelansicht.r.last();
+                    Einzelansicht.standart(Einzelansicht.r.getRow() + 1);
                 } catch (SQLException ex) {
+                    JOptionPane.showMessageDialog(null, "Da hat etwas nicht geklappt", "Fehler!", JOptionPane.ERROR_MESSAGE);
+                    sname = "";
+                    spalten = "";
                     throw new RuntimeException(ex);
                 }
             });
@@ -103,6 +120,7 @@ public class Hinzufügen extends Dialog implements ActionListener {
 
         } catch (SQLException e) {
             throw new RuntimeException(e);
+
         }
     }
 
diff --git a/src/Löschen.java b/src/Löschen.java
index c8d33b1..c4c8698 100644
--- a/src/Löschen.java
+++ b/src/Löschen.java
@@ -10,15 +10,25 @@ public class Löschen {
 
     public Löschen(String tab, DefaultTableModel model, JTable table) {
 
+        //Bestätigung des Users
         int response = JOptionPane.showConfirmDialog(null, "Wollen Sie dein Eintrag löschen?", "Bestätigen", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE);
         if (response == 0) {
             try (Connection conn = DriverManager.getConnection(url, "root", "")) {
                 Statement s = conn.createStatement();
+
+                //Backup erstellen und Datensatz löschen
                 //SELECT *, CURRENT_TIMESTAMP FROM spiel WHERE spiel.Heim =1 or spiel.Gast =1 AND spiel.Spiel_ID NOT IN (SELECT b.Spiel_ID FROM bundesliga_archiv.spiel as b);
                 ResultSet r = s.executeQuery("INSERT into bundesliga_archiv.verein SELECT * ,CURRENT_TIMESTAMP FROM `verein` WHERE V_ID = " + Einzelansicht.vid);
                 r = s.executeQuery("DELETE  From " + tab + " WHERE " + model.getColumnName(0) + "=" + Einzelansicht.vid);
 
-                Einzelansicht.r.next();
+                //In den vorherigen oder nächsten Datensatz wechseln
+                if (Einzelansicht.r.previous()) {
+                    Einzelansicht.standart(Einzelansicht.r.getRow());
+                } else if (Einzelansicht.r.next()) {
+                    Einzelansicht.standart(Einzelansicht.r.getRow());
+                }
+
+
             } catch (SQLException e) {
                 throw new RuntimeException(e);
             }
diff --git a/src/Menü.java b/src/Menü.java
index 31bd23a..43d0514 100644
--- a/src/Menü.java
+++ b/src/Menü.java
@@ -10,6 +10,7 @@ public class Menü extends JFrame implements ActionListener {
     JList list = null;
     String url = "jdbc:mariadb://127.0.0.1:3306/bundesliga";
     String table = null;
+
     public static void main(String[] args) {
         Menü m = new Menü();
         m.setVisible(true);
@@ -25,7 +26,7 @@ public class Menü extends JFrame implements ActionListener {
         JLabel lbl = new JLabel("");
         ImageIcon img = new ImageIcon(new ImageIcon(Menü.class.getResource("/image/Bundesiga.jfif")).getImage());
         lbl.setIcon(img);
-        lbl.setBounds(150, 50, 200,202);
+        lbl.setBounds(150, 50, 200, 202);
         this.getContentPane().add(lbl);
         this.add(lbl);
 
@@ -69,7 +70,7 @@ public class Menü extends JFrame implements ActionListener {
         DefaultListModel liste = new DefaultListModel();
         list = new JList(liste);
         list.addListSelectionListener(e -> {
-            if (list.getSelectedValue().toString().equalsIgnoreCase("Verein") || list.getSelectedValue().toString().equalsIgnoreCase("spieler")) {
+            if (list.getSelectedValue().toString().equalsIgnoreCase("Verein")) {
                 this.add(v);
 
             } else
diff --git a/src/Suchen.java b/src/Suchen.java
index fee6ee6..9d67ccb 100644
--- a/src/Suchen.java
+++ b/src/Suchen.java
@@ -15,8 +15,6 @@ public class Suchen {
     static JList list;
     static JScrollPane sc;
     static int index = 0;
-    static boolean auswahl = false;
-    static boolean fertig = false;
 
 
     public static ResultSet search(String st, ResultSet rs) {
@@ -48,14 +46,17 @@ public class Suchen {
                         liste.addElement(r.getString("Name"));
                     }
                     r.first();
-                    frame = new JFrame("Suchergebnis");
-                    frame.setSize(300, 300);
-                    frame.setVisible(true);
+                    System.out.println(liste.getSize());
+                    if (liste.getSize() > 1) {
+                        frame = new JFrame("Suchergebnis");
+                        frame.setSize(300, 300);
+                        frame.setVisible(true);
 
-                    sc = new JScrollPane();
-                    sc.setViewportView(list);
-                    sc.setBounds(30, 100, 150, 200);
-                    frame.add(sc);
+                        sc = new JScrollPane();
+                        sc.setViewportView(list);
+                        sc.setBounds(30, 100, 150, 200);
+                        frame.add(sc);
+                    }
 
                     //Auswahl durch Doppelklick
                     list.addMouseListener(new MouseAdapter() {
@@ -73,7 +74,8 @@ public class Suchen {
                                     System.out.println("index =" + index);
                                     Einzelansicht.einfügen(r);
                                     Einzelansicht.r = r;
-                                    auswahl = true;
+
+
                                 } catch (SQLException ex) {
                                     throw new RuntimeException(ex);
                                 }
@@ -83,7 +85,6 @@ public class Suchen {
                     });
 
 
-                    System.out.println(auswahl);
                     return r;
                 } else {
                     throw new Exception();