JAVA Derby INSERT probleme

mirisbowring

Bekanntes Mitglied
Hi, ich möchte von einer GUI, in der Der Name, Geburtsdatum und Geschlecht eingegeben wird, in meine Datenbank schreiben. allerdings bekomme ich immer
Code:
java.lang.NullPointerException
aber auch nur das, also keine weitere Erläuterung oder so dazu.

Java:
private void jButton8ActionPerformed(java.awt.event.ActionEvent evt) {                                                 //Hier wird der angeklickte Wert gespeichert, um ihn später einsetzen zu können. das println ist zum nachverfolgen, ob alles sauber läuft, wenn die Konsole läuft.
        Inputg = (String) jComboBox10.getSelectedItem(); //hierbei handelt es sich um die combobox mit dem geschlecht
        //System.out.println(Inputg);
        //Der String wird zu m bzw. w umgeändert, da die datenbank lediglich diese Buchstaben für das Geschlecht gespeichert hat.
        String weibl = "weiblich";
        String man = "männlich";
        if (Inputg.contains(weibl)) 
        {
            Inputg = "w";
            //System.out.println(Inputg);
        } 
        else if (Inputg.contains(man)) 
        {
            Inputg = "m";
            //System.out.println(Inputg);
        }
        //System.out.println(e.getStateChange() == 1 ? JComboBox.getSelectedItem() : "");
        //Zahlen aus dem Datumfeldern werden eingelesen
        jahr = Integer.parseInt(jTextField18.getText());
        //String monat = jTextField17.getText();
        monat = Integer.parseInt(jTextField17.getText());
        tag = Integer.parseInt(jTextField15.getText());
        //Namen werden ausgelesen
        vorname = jTextField14.getText();
        nachname = jTextField16.getText();
        String name = nachname + ", " + vorname;
        //System.out.println(name);
        //es wird eine Variable 'y' mit dem Wert 1 erstellt und vom Monat abgezogen, da der Gregorianische Kalender von 0-11 geht|nicht aber von 1-12: Und da der nutzer das nicht beachten soll, muss der Integer einfach mit 1 Subtrahiert werden.
        int y;
        int z;
        y = 1;
        z = monat - y;
        //GregorianCalender ermöglicht einen Datum Datentyp
        //GregorianCalendar geburtsdatum = new GregorianCalendar(jahr, z, tag);
        //Date udate = geburtsdatum.getTime();
        //standartmäßig verwendet der GregorianCalender alle Einheiten (also auch Zeit, etc.) aber wir brauchen nur das Datum, demnach geben wir ihm das Schema vor
        //SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");       
        //String datum = sdf.format(udate);
        //SQL
        //PreparedStatement preparedStatement = null;        
        
        
        String SQLinsert = "INSERT INTO SCHUELER (NAME, GESCHLECHT, GEBURTSDATUM) VALUES (?, ?, ?)";
        
        try
        {            
            PreparedStatement preparedStatement = conn.prepareStatement(SQLinsert);
            preparedStatement.setString(1, name);
            preparedStatement.setString(2, Inputg);         
            //Datum wird in Datenbankformat gebracht
            java.util.Date dutil;
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-yy");
            dutil = sdf.parse(jahr + "-" + z + "-" + tag);
            java.sql.Date dsql = new java.sql.Date(dutil.getTime());            
            //wird für die Konsole ausgegeben
            System.out.println(dutil);  
            System.out.println("dsql =" + dutil); 
            preparedStatement.setDate(3, dsql);
            //Update durchführen
            preparedStatement.executeUpdate();
            /*stmtdbbi = dbverbindung.createStatement();
            stmtdbbi.executeUpdate("INSERT INTO LOGIN.SCHUELER (name, geschlecht, geburtsdatum) " 
                    +"VALUES ('"+name+"', '"+Inputg+"', '"+datum+"')");
            String SQLcontrol = ("SELECT * FROM LOGIN.SCHUELER");
            System.out.println(SQLcontrol);*/
        } catch (Exception e) {
            System.out.println("dbbearbeitenpanel DB-Verbindungsfehler: " + e);
            System.exit(0);
        }
    
    }

hat jmd ne Idee, wie ich das beheben kann, denn das ist so ziemlich die letzte Schwierigkeit in meinem Projekt :)

MFG
mirisbowring
 

mirisbowring

Bekanntes Mitglied
Kannst du den ganzen Stacktrace reinstellen ?

Code:
java.lang.NullPointerException
    at datenbankgui.dbbearbeitenPanel.jButton8ActionPerformed(dbbearbeitenPanel.java:2862)
    at datenbankgui.dbbearbeitenPanel.access$600(dbbearbeitenPanel.java:18)
    at datenbankgui.dbbearbeitenPanel$8.actionPerformed(dbbearbeitenPanel.java:691)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2346)
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
    at java.awt.Component.processMouseEvent(Component.java:6525)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
    at java.awt.Component.processEvent(Component.java:6290)
    at java.awt.Container.processEvent(Container.java:2234)
    at java.awt.Component.dispatchEventImpl(Component.java:4881)
    at java.awt.Container.dispatchEventImpl(Container.java:2292)
    at java.awt.Component.dispatchEvent(Component.java:4703)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4898)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4533)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4462)
    at java.awt.Container.dispatchEventImpl(Container.java:2278)
    at java.awt.Window.dispatchEventImpl(Window.java:2739)
    at java.awt.Component.dispatchEvent(Component.java:4703)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:746)
    at java.awt.EventQueue.access$400(EventQueue.java:97)
    at java.awt.EventQueue$3.run(EventQueue.java:697)
    at java.awt.EventQueue$3.run(EventQueue.java:691)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:86)
    at java.awt.EventQueue$4.run(EventQueue.java:719)
    at java.awt.EventQueue$4.run(EventQueue.java:717)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:716)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
 

Dompteur

Top Contributor
Und jetzt verrate uns bitte noch, welche Zeile in deinem Codeausschnitt damit gemeint ist:
datenbankgui.dbbearbeitenPanel.jButton8ActionPerformed(dbbearbeitenPanel.java:2862)
 

mirisbowring

Bekanntes Mitglied
Achso ja :)

Code:
PreparedStatement preparedStatement = conn.prepareStatement(SQLinsert);


Und hier wird die Connection erstellt (bevor jmd. fragt)

Java:
Connection conn;    
final String database = "SPORTDATABASE";
    public void start() throws InstantiationException, IllegalAccessException, ClassNotFoundException, SQLException {
        Class.forName("org.apache.derby.jdbc.EmbeddedDriver").newInstance();
        System.out.println("Datenbanktreiber erfolgreich geladen...");
            if (new File(database).exists()) {
                    conn = DriverManager.getConnection("jdbc:derby:" + database);
                    System.out.println(database + " existiert und wurde erfolgreich verbunden");
            } 
            else 
            {
                    conn = DriverManager.getConnection("jdbc:derby:" + database + ";create=true");
                    System.out.println(database + " existiert nicht und wird erstellt");
                    System.out.println(database + " erfolgreich verbunden");
            }
    }
 

Dompteur

Top Contributor
In den angegebenen Zeile kann nur "conn" die Ursache für die NullPointerException sein.

Hast du schon geprüft, dass start() auch wirklich aufgerufen wird und die Ausgaben auf der Konsole deinen Erwartungen entspricht ?

Sonst könnte eine zweite Variable, die ebenfalls conn heißt und in einer anderen Klasse definiert ist so ein Problem verursachen.

Da das Problem anscheinend nicht lokal im Umfeld der Zeile passiert, braucht man wahrscheinlich den gesammten Code.
 

mirisbowring

Bekanntes Mitglied
Stimmt... der erkennt conn nicht genau...
(Ursprünglich hatte ich die Verbindung zur Datenbank in einer anderen Klasse, aber dann hatte ich Probleme damit, auf die Methode von dieser Klasse aus zuzugreifen, weshalb ich jetzt conn in dieser Klasse definiere...

der code ist sehr lang (vor allem auch wegen des GUI BUILDERS von netbeans, der alles ein wenig länger macht, als man müsste)

Conn wird gleich am Anfang definiert und der Button (wo die SQL Eingabe erfolgen soll) startet bei Zeile 85 im zweiten Post.


Java:
package datenbankgui;

import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.sql.*;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.StringTokenizer;
import javax.swing.*;
import datenbankgui.DB;
import java.text.ParseException;
import java.util.logging.Level;
import java.util.logging.Logger;


public class dbbearbeitenPanel extends javax.swing.JPanel{


    Connection conn;
    final String database = "SPORTDATABASE";
    public void start() throws InstantiationException, IllegalAccessException, ClassNotFoundException, SQLException {
        Class.forName("org.apache.derby.jdbc.EmbeddedDriver").newInstance();
        System.out.println("Datenbanktreiber erfolgreich geladen...");
            if (new File(database).exists()) {
                    conn = DriverManager.getConnection("jdbc:derby:" + database);
                    System.out.println(database + " existiert und wurde erfolgreich verbunden");
            } 
            else 
            {
                    conn = DriverManager.getConnection("jdbc:derby:" + database + ";create=true");
                    System.out.println(database + " existiert nicht und wird erstellt");
                    System.out.println(database + " erfolgreich verbunden");
            }
    }
    
    //DB klassedb = new DB();
    //DB conn;
    //DB database;
    
    //in diesen String[s] wird die eingabe des Textfeldes gespeichert


    String vorname = null;
    String nachname = null;
    //Das Datum
    int tag;
    int monat;
    int jahr;
    //combobox klasse Auswahlstring
    String Inputk = null;
    //combobox name Auswahlstring
    String Inputn = null;
    //combobox geschlecht Auswahlstring
    String Inputg = null;
    //combobox SchulForm
    String Inputsf = null;
    //combobox klassenstufe
    String Inputks = null;
    //combobox klassenstufeanhang
    String Inputksa = null;
    //Klassenstufe im Datenbank design (z.B. 78 oder 910)
    String Inputksd = null;
    //Connection dbverbindung;
    Statement stmtdbb;
    Statement stmtdbbi;
    //hier werden die Schüler gespeichert
    ResultSet rss;
    //hier werden die Klassen gespeichert
    ResultSet rsk;
    //eingabe
    ResultSet ri;
    //Inhalt für combobox geschlecht wird erstellt (ein Array)
    String jComboBox10Liste[]
            = {
                "männlich",
                "weiblich"
            };


    //Objekt wird erzeugt, auf dem die Systemzeit/datum ausgegeben werden.
    JLabel Systemzeit;
    JLabel Systemdatum;
    //Systemdatum wird ermittelt
    SimpleDateFormat Date = new SimpleDateFormat("dd.MM.yyyy");
    //Systemzeit wird ermittelt (HH:mm:ss|ich nehme nur HH:mm)
    SimpleDateFormat Time = new SimpleDateFormat("HH:mm");
    //Hintergrundbild wir eingefügt
    Image bg = new ImageIcon("src\\ressources\\background1920x1080.png").getImage();


    @Override
    public void paintComponent(Graphics g) {
        g.drawImage(bg, 0, 0, getWidth(), getHeight(), this);
    }


    public dbbearbeitenPanel() {
        Systemdatum = new JLabel(Date.format(new Date()));
        Systemzeit = new JLabel(Time.format(new Date()));


        //Position des Labels wird bestimmt
        Systemdatum.setBounds(1103, 35, 70, 30);
        Systemzeit.setBounds(1134, 50, 40, 30);
        //laufende Uhr erstellen (1000 steht für die ms)
        Timer timer = new Timer(1000, new ActionListener() {


            @Override
            public void actionPerformed(ActionEvent e) {
                String aktuelleZeit = Time.format(new Date());
                Systemzeit.setText(aktuelleZeit);
            }
        });
        timer.start();


        add(Systemzeit);
        add(Systemdatum);
        setVisible(true);
        initComponents();
        scannerArray = new ArrayList(); // haelt die Daten
        jButtonImportDaten.setEnabled(false);  // Import-Button disable
        model1 = new DefaultListModel(); // Model für Listbox
        //DB();
    }
    /*public void DB() {
        try {
            //Datenbanktreiber wird geladen
            Class.forName("org.apache.derby.jdbc.ClientDriver");
            System.out.println("eingabepanel Treiber erfolgreich geladen...");
        } catch (ClassNotFoundException e) {
            System.out.println("eingabepanel Fehler beim Laden des Treibers" + e);
            System.exit(0);
        }
        try {
            //User und Passwort werden gesetz und Pfad zur Datenbank
            String host = "jdbc:derby://localhost:1527/Datenbank";
            String username = "login";
            String userpw = "login";
            //Verbindung mit der Datenbank wird aufgebaut
            dbverbindung = DriverManager.getConnection(host, username, userpw);
            System.out.println("eingabepanel Verbindung erfolgreich...");


            //Daten werden in das ResultSet geladen
            stmtdbb = dbverbindung.createStatement();
            String SQLk = "SELECT * FROM klasse";
            //im ResultSet Object werden alle Ergebnisse aus der Datenbank gespeichert            
            ResultSet rsk = stmtdbb.executeQuery(SQLk);
                while (rsk.next()) {
                    jComboBox1.addItem(rsk.getString(2));
                    jComboBox9.addItem(rsk.getString(2));
                    jComboBox13.addItem(rsk.getString(2));
                    jComboBox17.addItem(rsk.getString(2));
                }
            //SQLs steht für SQL(Befehl)und s(schueler) ||| 2 ist die 2. Spalte, in der die Namen stehen. (mit name kann man das anscheinend nicht abfragen) --> die Zahlen stehen also für die jeweilige Spalte in der Tabelle
            /*String SQLs = "SELECT 2 "                                     //SELECT name                                                   --> VARCHAR
             + "FROM SCHUELER "                                  //FROM schueler
             + "WHERE 5 = (SELECT 1 "                            //WHERE klassen_ID = (SELECT klassen_ID                         --> INTEGER
             + "FROM KLASSE "                //                    FROM klasse
             + "WHERE 2 = '"+Inputk+"')";    //                    WHERE klassenbezeichnung = 'Input');      --> VARCHAR
             //rss = ResultSetSchueler
             ResultSet rss = stmt.executeQuery(SQLs);
             while (rss.next())
             {
             jComboBox2.addItem(rss.getString(1));
             }*/
        /*} catch (SQLException e) {
            System.out.println("eingabepanel DB-Verbindungsfehler: " + e);
            System.exit(0);
        }
    }*/
    public void verarbeiteCsvDatei(String fileName, ArrayList scannerList) { 
        try {
            final BufferedReader reader = new BufferedReader(new FileReader(fileName)); 
            String zeile = reader.readLine(); 
                while (zeile != null) 
                { 
                    verarbeiteCsvZeile(zeile, scannerList); 
                    zeile = reader.readLine(); 
                } 
                reader.close(); 
        } 
        catch (FileNotFoundException e) 
        {
                    e.printStackTrace();
        } 
        catch (IOException e) 
        {
                    e.printStackTrace();
        }
    } 
     /** 
     * Verarbeite eine einzelne CSV Zeile. 
     */ 
    public void verarbeiteCsvZeile(String data, ArrayList arrayList) { 
        //System.out.println("-------------------------- Neue Zeile:"); 
        StringTokenizer st = new StringTokenizer(data, ";"); 
        ScannerElement se = new ScannerElement(); //neues Scannerelement erstellen
        if (st.hasMoreTokens())
        {
            se.nachName = st.nextToken();
        }
        else
        {
            se.nachName = "???";
        }
            
        if (st.hasMoreTokens()){
            se.vorName = st.nextToken();
        }
        else
        {
            se.vorName = "???";
        }
        if (st.hasMoreTokens()){
            se.geschlecht = st.nextToken();
        }
        else
        {
            se.geschlecht = "???";
        }
        if (st.hasMoreTokens())
        {
            se.klasse = st.nextToken();
        }
        else
        {
            se.klasse = "???";
        }
        
        if (st.hasMoreTokens())
        {
            se.geburtsDatum = st.nextToken();
        }
        else
        {
            se.geburtsDatum = "???";
        }
            
        // Kontrollausgabe
        System.out.printf("in CVS gelesen: %-25s %-25s %-25s %-25s  %-25s \n",
            se.nachName,
            se.vorName,
            se.geschlecht,
            se.klasse,
            se.geburtsDatum);


        scannerArray.add(se);
    }

ps: ich muss das ganze in mehrere Beiträge machen, da der sonst zu lang ist (wird mir angezeigt)
 
Zuletzt bearbeitet:

mirisbowring

Bekanntes Mitglied
Java:
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        mainmenupanel mp = new mainmenupanel();
        BorderLayout borderLay = new BorderLayout();
        setLayout(borderLay);
        removeAll();
        add(mp);
        mp.setVisible(true);
        validate();
    }                                        


    private void jTextField17ActionPerformed(java.awt.event.ActionEvent evt) {                                             
        // TODO add your handling code here:
    }                                            


    private void jTextField16ActionPerformed(java.awt.event.ActionEvent evt) {                                             
        //Nachname
    }                                            


    private void jTextField15ActionPerformed(java.awt.event.ActionEvent evt) {                                             
        // TODO add your handling code here:
    }                                            


    private void jTextField14ActionPerformed(java.awt.event.ActionEvent evt) {                                             
        //Vorname       
    }                                            


    private void jTextField20ActionPerformed(java.awt.event.ActionEvent evt) {                                             
        // TODO add your handling code here:
    }                                            


    private void jTextField22ActionPerformed(java.awt.event.ActionEvent evt) {                                             
        // TODO add your handling code here:
    }                                            


    private void jTextField23ActionPerformed(java.awt.event.ActionEvent evt) {                                             
        // TODO add your handling code here:
    }                                            


    private void jTextField32ActionPerformed(java.awt.event.ActionEvent evt) {                                             
        // TODO add your handling code here:
    }                                            


    private void jComboBox9ActionPerformed(java.awt.event.ActionEvent evt) {                                           
        //Hier wird der angeklickte Wert gespeichert, um ihn später einsetzen zu können. das println ist zum nachverfolgen, ob alles sauber läuft, wenn die Konsole läuft.
        Inputk = (String) jComboBox9.getSelectedItem();
        System.out.println(Inputk);
        //System.out.println(e.getStateChange() == 1 ? JComboBox.getSelectedItem() : "");
    }                                          


    private void jComboBox17ActionPerformed(java.awt.event.ActionEvent evt) {                                            
        //Hier wird der angeklickte Wert gespeichert, um ihn später einsetzen zu können. das println ist zum nachverfolgen, ob alles sauber läuft, wenn die Konsole läuft.
        Inputk = (String) jComboBox17.getSelectedItem();
        System.out.println(Inputk);
        //System.out.println(e.getStateChange() == 1 ? JComboBox.getSelectedItem() : "");
    }                                           


    private void jComboBox1ActionPerformed(java.awt.event.ActionEvent evt) {                                           
        //Hier wird der angeklickte Wert gespeichert, um ihn später einsetzen zu können. das println ist zum nachverfolgen, ob alles sauber läuft, wenn die Konsole läuft.
        Inputk = (String) jComboBox1.getSelectedItem();
        System.out.println(Inputk);
        //System.out.println(e.getStateChange() == 1 ? JComboBox.getSelectedItem() : "");
    }                                          


    private void jComboBox13ActionPerformed(java.awt.event.ActionEvent evt) {                                            
        //Hier wird der angeklickte Wert gespeichert, um ihn später einsetzen zu können. das println ist zum nachverfolgen, ob alles sauber läuft, wenn die Konsole läuft.
        Inputk = (String) jComboBox13.getSelectedItem();
        System.out.println(Inputk);
        //System.out.println(e.getStateChange() == 1 ? JComboBox.getSelectedItem() : "");
    }                                           


    private void jButton8ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        //Hier wird der angeklickte Wert gespeichert, um ihn später einsetzen zu können. das println ist zum nachverfolgen, ob alles sauber läuft, wenn die Konsole läuft.
        Inputg = (String) jComboBox10.getSelectedItem(); //hierbei handelt es sich um die combobox mit dem geschlecht
        //System.out.println(Inputg);
        //Der String wird zu m bzw. w umgeändert, da die datenbank lediglich diese Buchstaben für das Geschlecht gespeichert hat.
        String weibl = "weiblich";
        String man = "männlich";
        if (Inputg.contains(weibl)) 
        {
            Inputg = "w";
            //System.out.println(Inputg);
        } 
        else if (Inputg.contains(man)) 
        {
            Inputg = "m";
            //System.out.println(Inputg);
        }
        //System.out.println(e.getStateChange() == 1 ? JComboBox.getSelectedItem() : "");
        //Zahlen aus dem Datumfeldern werden eingelesen
        jahr = Integer.parseInt(jTextField18.getText());
        //String monat = jTextField17.getText();
        monat = Integer.parseInt(jTextField17.getText());
        tag = Integer.parseInt(jTextField15.getText());
        //Namen werden ausgelesen
        vorname = jTextField14.getText();
        nachname = jTextField16.getText();
        String name = nachname + ", " + vorname;
        //System.out.println(name);
        //es wird eine Variable 'y' mit dem Wert 1 erstellt und vom Monat abgezogen, da der Gregorianische Kalender von 0-11 geht|nicht aber von 1-12: Und da der nutzer das nicht beachten soll, muss der Integer einfach mit 1 Subtrahiert werden.
        int y;
        int z;
        y = 1;
        z = monat - y;
        //GregorianCalender ermöglicht einen Datum Datentyp
        //GregorianCalendar geburtsdatum = new GregorianCalendar(jahr, z, tag);
        //Date udate = geburtsdatum.getTime();
        //standartmäßig verwendet der GregorianCalender alle Einheiten (also auch Zeit, etc.) aber wir brauchen nur das Datum, demnach geben wir ihm das Schema vor
        //SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");       
        //String datum = sdf.format(udate);
        //SQL
        //PreparedStatement preparedStatement = null;        
        
        
        String SQLinsert = "INSERT INTO SCHUELER (NAME, GESCHLECHT, GEBURTSDATUM) VALUES (?, ?, ?)";
        
        try
        {            
            PreparedStatement preparedStatement = conn.prepareStatement(SQLinsert);
            preparedStatement.setString(1, name);
            preparedStatement.setString(2, Inputg);         
            //Datum wird in Datenbankformat gebracht
            java.util.Date dutil;
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-yy");
            dutil = sdf.parse(jahr + "-" + z + "-" + tag);
            java.sql.Date dsql = new java.sql.Date(dutil.getTime());            
            //wird für die Konsole ausgegeben
            System.out.println(dutil);  
            System.out.println("dsql =" + dutil); 
            preparedStatement.setDate(3, dsql);
            //Update durchführen
            preparedStatement.executeUpdate();
            /*stmtdbbi = dbverbindung.createStatement();
            stmtdbbi.executeUpdate("INSERT INTO LOGIN.SCHUELER (name, geschlecht, geburtsdatum) " 
                    +"VALUES ('"+name+"', '"+Inputg+"', '"+datum+"')");
            String SQLcontrol = ("SELECT * FROM LOGIN.SCHUELER");
            System.out.println(SQLcontrol);*/
        } catch (Exception e) {
            e.printStackTrace();
            System.out.println("dbbearbeitenpanel DB-Verbindungsfehler: " + e);
            System.exit(0);
        }
    
    }                                        
    private void jTextField18ActionPerformed(java.awt.event.ActionEvent evt) {                                             
    }                                            
    private void jComboBox10ActionPerformed(java.awt.event.ActionEvent evt) {                                            
    }                                           
    private void jComboBox4ActionPerformed(java.awt.event.ActionEvent evt) {                                           
    }                                          
    private void jComboBox3ActionPerformed(java.awt.event.ActionEvent evt) {                                           
    }                                          
    private void jButton5ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        Inputks = (String) jComboBox3.getSelectedItem();
        Inputsf = (String) jComboBox4.getSelectedItem();
        Inputksa = (String) jComboBox5.getSelectedItem();
        //Die Klassen heißen z.B. G7a und nicht Gymnasium7a, weshalb hier die abkürzung gemacht wird
        String gym = "Gymnasium";
        String sek = "Sekundarschule";
        if(Inputsf.contains(gym))
        {
           Inputsf = "G";
           //System.out.println(k1);
        }
        else if(Inputsf.contains(sek))
        {
           Inputsf = "S";
           //System.out.println(k1);
        }
        //folgendes ist keine Klassenbezeichnung sondern lediglich ein Platzhalter, falls die Klasse keinen Anhang hat: G7
        String nothing = "-------------";
        if(Inputksa.contains(nothing))
        {
            Inputksa = "";
        }
        String addklass = Inputsf + Inputks + Inputksa;
        System.out.println(addklass);
        //Klassenstufe wird auf Datenbankdesign gebracht, da es für die Bestenliste wichtig ist, dass 7./8. und 9./10. zusammen sind
        String sieben = "7";
        String acht = "8";
        String neun = "9";
        String zehn = "10";
        if(Inputks.contains(sieben))
        {
            Inputksd = "78";
        }
        else if(Inputks.contains(acht))
        {
            Inputksd = "78";
        }
        else if(Inputksd.contains(neun))
        {
            Inputksd = "910";
        }
        else if(Inputksd.contains(zehn))
        {
            Inputksd = "910";
        }
        //SQL
        try
        {
            stmtdbbi = conn.createStatement();
            stmtdbbi.executeUpdate("INSERT INTO klasse ( 2, 3) " 
                    +"VALUES ("+addklass+", "+Inputksd+")");
            System.out.println(addklass + Inputksd);
            String SQLcontrol = ("SELECT * FROM klasse");
            System.out.println(SQLcontrol);
        } catch (Exception e) {
            System.out.println("dbbearbeitenpanel DB-Verbindungsfehler: " + e);
            System.exit(0);
        }
    }                                        
    private void jComboBox5ActionPerformed(java.awt.event.ActionEvent evt) {                                           
    }                                          


    private void jButtonLeseDatenActionPerformed(java.awt.event.ActionEvent evt) {                                                 
        JFileChooser fileChooser = new JFileChooser(); // Dateiauswahldialog
        // das aktelle Verzeichnis für den Dateiauswahldialog setzen
        String lastDir = System.getProperty("Scanner.lastDir");
        if (lastDir == null){
            lastDir = System.getProperty("user.home");
        }
        fileChooser.setCurrentDirectory(new File(lastDir));
        //fileChooser.setCurrentDirectory(new File("c:\\temp\\scanner"));


        // start Dateiauswahldialog
        int result = fileChooser.showOpenDialog(this);


        if (result == JFileChooser.APPROVE_OPTION) {
            // Dateiauswahl war erfolgreich
            File selectedFile = fileChooser.getSelectedFile();
            System.setProperty("Scanner.lastDir", selectedFile.getAbsolutePath());


            //System.out.println("Selected file: " + selectedFile.getAbsolutePath());
            scannerArray.clear(); // arraylist leeren


            // CSV Datei lesen und arraylist füllen
            verarbeiteCsvDatei(selectedFile.getAbsolutePath(), scannerArray);


            // Loeschen der Elemente in der Listbox
            model1.removeAllElements();


            for (int i = 0; i < scannerArray.size(); i++) {


                ScannerElement se = (ScannerElement)scannerArray.get(i);


                System.out.printf("Kontrollausgabe fuer index %d: %-25s %-25s %-25s %-25s  %-25s \n",
                    i,
                    se.nachName,
                    se.vorName,
                    se.geschlecht,
                    se.klasse,
                    se.geburtsDatum);


                // Listbox fuellen
                model1.addElement(se.nachName+", "+se.vorName);
            }


            jListGeleseneDaten.setModel(model1); // Model an die Listbox übergeben
            jButtonImportDaten.setEnabled(true); // Importbutton enable
            Erfolgreichlesen ef = new Erfolgreichlesen();
            ef.setVisible(true);
            
        }
    }                                                


    private void jButtonImportDatenActionPerformed(java.awt.event.ActionEvent evt) {                                                   
        for (int i = 0; i < scannerArray.size(); i++) {


            ScannerElement se = (ScannerElement)scannerArray.get(i);


            System.out.printf("impotiere fuer index %d: %-25s %-25s %-25s %-25s  %-25s \n",
                i,
                se.nachName,
                se.vorName,
                se.geschlecht,
                se.klasse,
                se.geburtsDatum);


            /*
            *       Hier die Daten in die Dateibank über SQL schreiben
            *       dabei ist die erste Zeile die Ueberschrift
            */
        }
        // Listbox leeren
        model1.removeAllElements(); 
        jListGeleseneDaten.setModel(model1);
        jButtonImportDaten.setEnabled(false); // Importbutton disable
        Erfolgreichimport ei = new Erfolgreichimport();
        ei.setVisible(true);
    }

Der Rest sollte eher uninteressant sein, da ich mit dem nicht arbeite...
 
Zuletzt bearbeitet:

Dompteur

Top Contributor
Ich finde nirgends den Aufruf der "start"-Methode.

Daher noch einmal die Frage: Hast du schon geprüft, dass start() auch wirklich aufgerufen wird und die Ausgaben auf der Konsole deinen Erwartungen entspricht ?
 

mirisbowring

Bekanntes Mitglied
stimmt, ich habe ganz vergessen, die Methode auch aufzurufen...

danke :)

allerdings stellt sich mir jetzt ein problem, mit dem ich überhaupt nichts anfangen kann, denn

wenn ich jetzt etwas aus der Datenbank lesen (SELECT) will, gibt er mir nicht das aus, was ich haben will:
Code:
org.apache.derby.impl.jdbc.EmbedResultSet42@1d95a69a

Java:
String SQLcontrol = "SELECT NAME FROM SCHUELER";

test = conn.createStatement();            ResultSet rscontrol = test.executeQuery(SQLcontrol);
            while(rscontrol.next())
            {
                System.out.println(rscontrol);
            }
            rscontrol.close();

der Fehler muss ja hier liegen, aber ich weiß nicht genau, was daran jetzt falsch sein soll. (die menge der Zeilen, die er ausgibt ist schon richtig (also diese art Fehlermeldung wiederholt er, wie die Anzahl der Zeilen in der DB)
 

Dompteur

Top Contributor
Die toString Methode ist bei deinem ResultSet nicht überschrieben. Daher zieht die Implementierung von Object. Also wird der Klassenname + @ + der Hashwert des Objekts ausgegeben.

Wenn du "rscontrol" in Zeile 7 durch "rscontrol.getString(1)" ersetzt, dann wird für jeden Satz das erste Feld ausgegeben.
 

mirisbowring

Bekanntes Mitglied
Stimmt :)

vergessen :oops:

wie schaffe ich es, alle spalten anzuzeigen? (das mit dem * ist mir klar... ich meine halt das mit dem getString())
mit Kommata abtrennen geht leider nicht so weit ich weiß
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
B Derby/JavaDB Einrichten der Derby DB / JAVA DB Datenbankprogrammierung 2
P Zugreifen auf Derby Datenbank mit java (ÜBERARBEITET) Datenbankprogrammierung 2
H Derby in Java 6 direkt integriert? Wie nutzt man das? Datenbankprogrammierung 3
B Java Derby Datenbank mit CLOB & BLOB Datenbankprogrammierung 5
vogella Java DB (Derby) Size Datenbankprogrammierung 12
Juelin Java und MySQL MariaDB - WHERE-Klausel Datenbankprogrammierung 17
P Reicht finally nicht um DB connections zu schließen in (altem) Java? Datenbankprogrammierung 4
A Java DB Server lässt sich nicht starten Datenbankprogrammierung 3
TheSkyRider MySQL Datenbankzuordnung in Verbindung mit Java Datenbankprogrammierung 7
U SQL Server mit Java verbinden Datenbankprogrammierung 5
D SQLite Datenbank in Android Studio (Java) durchsuchen Datenbankprogrammierung 3
TH260199 Java-Programm. Probleme bei der Umsetzung von einer Kontaktverwaltung. Datenbankprogrammierung 7
S Das printen der Ausgabe des Oracle-SQL-Statements in der Java-Eclipse-Konsole funktioniert nicht Datenbankprogrammierung 6
Zrebna Wie mittels Hibernate eine Join-Tabelle als eigene Java-Klasse erstellen? Datenbankprogrammierung 5
Zrebna Noobfrage: Konvertierung von SQL-Datentyp 'timestamp with time zone' in Java-Datentyp Datenbankprogrammierung 3
Zrebna Lediglich interne DB-Verbindungen (Connections) auslesen - mittels Java Datenbankprogrammierung 4
berserkerdq2 Was genau muss ich bei date eingeben, wenn ich in Java eine Spalte definiere, die date ist? Datenbankprogrammierung 1
berserkerdq2 Was kann passieren, wenn ich in java einstelle, dass der Fremdschüssel ein Attribut ist, welches selber kein Primärschlüssel ist? Datenbankprogrammierung 4
berserkerdq2 Foreign key einstellen java Datenbankprogrammierung 4
nikgo Java SQL Ausgabe in Liste o.ä. abspeichern um mit dem Ergbnis "zu arbeiten"? Datenbankprogrammierung 5
S Datenbankprogrammierung in Java unter NetBeans 12 funktioniert nicht! Datenbankprogrammierung 1
Beginner22 Zugriff auf Datenbank aus Java über mariadb Datenbankprogrammierung 3
S ODBC Treiber in Java Editor einbinden Datenbankprogrammierung 3
H Oracle Resize eines Images in Java und Rückgabe des Image als BLOB an die Oracle Datebank Datenbankprogrammierung 14
H Java Class zum komprimieren von Jpeg-Images zum Einbinden in Oracle DB - Bild als blob (in und out) Datenbankprogrammierung 23
V SQLite java.sql.SQLException: no such column: Datenbankprogrammierung 18
B Wie kopieren ich eine Spalte von einer Tabelle in eine andere Tabelle SQLite durch java code? Datenbankprogrammierung 26
D Daten aus der Firebase-Echtzeitdatenbank abfragen und in Variablen speichern (JAVA) Datenbankprogrammierung 0
Slaylen Java List Suchen mit eigenem Generischen Datentyp Datenbankprogrammierung 10
N java sql abfrage bestimmer Datumszeitraum Datenbankprogrammierung 9
D SQL Server Android App: 'int java.lang.String.length()' on a null object reference Datenbankprogrammierung 15
P USER Management in SQL übergreifend auf JAVA Programm Datenbankprogrammierung 1
H MySQL Verbindung Datenbank und Eclipse (Java) Datenbankprogrammierung 5
N Java Abfrage über GUI, Daten hinzufügen Datenbankprogrammierung 54
N Java, sql, jar, JDBC-Treiber in Classpath Datenbankprogrammierung 8
N java SQL JAR - Probleme Datenbankprogrammierung 18
N SQL Datenbank Spalte in Java Array Datenbankprogrammierung 2
N SQL-Statement Java Variable in SQL DB einfügen Datenbankprogrammierung 1
S Verbindung von einer Excel Datei zu Java Datenbankprogrammierung 2
H suche eine Login system Bibliothek für Java Datenbankprogrammierung 5
T Java Spiel Daten speichern Datenbankprogrammierung 1
C Java MySQL check if value exists in database Datenbankprogrammierung 2
N Sqlite DB mit Java wird auf Linuxsystem nicht gefunden Datenbankprogrammierung 9
L Mybatis Datenbankabfragen in Java Datenbankprogrammierung 1
H MariaDB-Zugriff mittels Java SE Datenbankprogrammierung 3
J Java fügt Datensätze ein aber diese werden nicht richtig abgefragt Datenbankprogrammierung 3
S Datenbank MySQL und Java Datenbankprogrammierung 8
S Beispiel-Blockchain + GUI mit Java erstellen Datenbankprogrammierung 0
P Adressadministration mit Java und mySQL Datenbankprogrammierung 14
Trèfle SQLite SQL-Java Änderungen ausgeben Datenbankprogrammierung 1
Dimax MySQL Maximale Datenlänge für eine Spalte einer Datenbank in java ermitteln Datenbankprogrammierung 15
A MySQL Select und Insert in Java Datenbankprogrammierung 15
C Derby/JavaDB Auf Variable aus Link in java server page zugreifen Datenbankprogrammierung 4
platofan23 MySQL Java Programm findet Treiber für mySQL auf Debian-Server nicht? Datenbankprogrammierung 11
F MySQL Einfügen von Datensätzen über Java Datenbankprogrammierung 8
B CSV in Java einbinden und Rechnung Datenbankprogrammierung 7
L Speicherverbrauch Java Anwendung mit einer Datenbankanbindung Datenbankprogrammierung 19
X MySQL Java hat keinen Zugriff auf MySQL Datenbankprogrammierung 9
L Java- Zähle alle Werte aus der Tabelle von aktiver Zelle Datenbankprogrammierung 12
S Datenbank/Java true/false Datenbankprogrammierung 8
S Java und SQL-Befehle Datenbankprogrammierung 6
L INSERT INTO Befehl in Java Datenbankprogrammierung 8
L Datenbankprogrammierung mit Java und phpMyAdmin Datenbankprogrammierung 4
Korvinus Java mit Cassandra verbinden Datenbankprogrammierung 18
M SQL-Statement SQL mit Java, Update Fehler Datenbankprogrammierung 1
D Installation von MariaDB in java und eclipse Datenbankprogrammierung 2
H Datenbank Export mit Java Datenbankprogrammierung 3
I MariaDB-Verbindung in JAVA Datenbankprogrammierung 11
L Oracle Datenbank über Java aufrufen Datenbankprogrammierung 29
W Daten in Java intern abfragen Datenbankprogrammierung 1
W MySQL Ausgabe von Datenbank in Java-App Datenbankprogrammierung 6
D Java Datenbanken Datenbankprogrammierung 1
Y H2 H2 foreign key in Spark Java ausgeben Datenbankprogrammierung 1
J Java Eclipse Hilfe beim Programmieren Datenbankprogrammierung 7
K Java Object mit Hibernate in MySQL abspeichern Datenbankprogrammierung 1
R Java-Befehle/Operatoren für copy&paste Datenbankprogrammierung 2
C Mit asm laufende Java Anwendung manipulieren Datenbankprogrammierung 1
W Wie liest dieses Java-Programm der Compiler? Datenbankprogrammierung 3
K Java Datenbank auslesen Datenbankprogrammierung 8
G MySQL Java Problem: Nullpointer Exception obwohl Daten vorhanden sind? Datenbankprogrammierung 2
K HSQLDB .sql Script Aufruf über Java Datenbankprogrammierung 7
B Java Programm und Dantebank umlagern Datenbankprogrammierung 25
B MySQL bplaced Datenbank mit Java ansprechen Datenbankprogrammierung 11
F MySQL Wie kann ich in Java Datensätze aus einer MySQL Datenbank gezielt in einzelne Arrays schreiben? Datenbankprogrammierung 9
F Java Objekte in einer Datenbank speichern Datenbankprogrammierung 4
perlenfischer1984 Java Objecte speichern mit Hibernate ? Datenbankprogrammierung 2
B Probleme mit java.sql.SQLException: ResultSet closed Datenbankprogrammierung 21
O PostgreSQL Java Row Index erhalten Datenbankprogrammierung 1
dzim Cassandra Cluster DB und der Java-Treiber Datenbankprogrammierung 1
H Entity in Java implementieren Datenbankprogrammierung 13
V Fehler beim Generierung Fehler beim Generierung java.lang.ArrayIndexOutOfBoundsException: 0 Datenbankprogrammierung 12
J mySQL- Java Application - Zugriff über Internet Datenbankprogrammierung 3
D MySQL Many to Many Tabellen in Java abbilden? Datenbankprogrammierung 4
P Datanbank für Java-Programmierung Datenbankprogrammierung 10
F Java SQLite Error Datenbankprogrammierung 19
F SQL Datenbank an Java Code anbinden Datenbankprogrammierung 5
J Java 8 und Microsoft Access Database-Dateien(mdb) Datenbankprogrammierung 1
H HSQLDB Beim öffnen folgender Fehler: ... java.lang.NullPointerException Datenbankprogrammierung 1
H SHOW Tables in Java/MySQL Datenbankprogrammierung 8
M Verbindung von Java Programm zur Acccess Datenbank (mdb-Datei) Datenbankprogrammierung 0

Ähnliche Java Themen


Oben