Derby/JavaDB Keine Reaktion von "insert into" im ActionListener

E99

Aktives Mitglied
Hallo!

Ich programmiere schon seit einiger Zeit mit Java. Schon lange versuche ich ein kl. Projekt zum Laufen zu bringen (eine kl. Vermögensverwaltung, die Werte in einer Datenbank abspeichert, bearbeitet und ausliest).
Die UI ist soweit fertig, aber mit der Db gibt es Probleme:

Derby Db ist die erste Datenbank, die eine Verbindung ohne Fehler hergestellt hat. :autsch:

Wenn ich jetzt aber Daten eintragen möchte und auf den entsprechenden Ok-Button klicke, passiert nichts...kein Eintrag wird ausgeführt....ABER es gibt auch keine Fehlermeldungen, die auftauchen...

Die Konsole bleibt leer und auch sonst geschieht nichts..

Nach langem Recherchieren weiß ich keinen Rat mehr...:rtfm::bahnhof:

Java:
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package ui;

import java.awt.AWTEvent;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.io.FileInputStream;
import java.io.IOException;
import java.sql.SQLException;
import java.util.Properties;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.text.PlainDocument;
import lib.DbFacade;
public class AktPanel extends JPanel{

boolean neuOkEuro;
boolean neuOkDollar;
boolean ed; 

 Properties qutient = new Properties();
 int euroDollarQuotient;
  JLabel aktie = new JLabel("Anlage:");
  static JTextField titel = new JTextField();
  static JTextField kaufwert = new JTextField();
  static JTextField aktWert = new JTextField();
  static JTextField anzahl = new JTextField();
  static JTextField gesamtWertKauf = new JTextField();
  static JTextField gesamtWertAkt = new JTextField();
  static JTextField gewinn = new JTextField();
  static JTextField kaufDatum = new JTextField();
  static JTextField verkaufDatum = new JTextField();
  JButton euro = new JButton();
  JButton ok = new JButton();
  JButton dollar = new JButton();
  
  GridLayout grid = new GridLayout(13, 1);
  private static int recordCounter; // Aktuellen Dateisatz merken

  static DbFacade dbLayer = new DbFacade();
  
public AktPanel(int recordIndex) {
        enableEvents(AWTEvent.WINDOW_EVENT_MASK);
      this.recordCounter = recordIndex;
        try {
            this.qutient.load(new FileInputStream("prp/bas/Basic.properties"));
            euroDollarQuotient = Integer.valueOf(qutient.getProperty("EuroDollarQuotient"));
        } catch (IOException ex) {
            Logger.getLogger(AktPanel.class.getName()).log(Level.SEVERE, null, ex);
        } catch(NumberFormatException ne){
            System.out.println("Fehler beim laden der währungsumrechnung!");
        }
                
        
        this.setLayout(grid);
    this.setMinimumSize(new Dimension(400, 250));
    this.setPreferredSize(new Dimension(400, 250));
    firstRecord(); // Ersten Datensatz holen
    
    this.add(aktie);
    this.add(titel);
    this.add(kaufwert);
    this.add(anzahl);
    this.add(kaufDatum);
    this.add(verkaufDatum);
    this.add(aktWert);
    this.add(gesamtWertKauf);
    this.add(gesamtWertAkt);
    this.add(gewinn);
    this.add(euro);
    this.add(dollar);
    this.add(ok);
    
    euro.setEnabled(false);
    ok.setEnabled(false);
    dollar.setEnabled(false);
    
    
    euro.addActionListener(new java.awt.event.ActionListener() {
      public void actionPerformed(ActionEvent e) {
         prepareNewEuro();
         ed = true;
      }
    });
    
    
    dollar.addActionListener(new java.awt.event.ActionListener() {
      public void actionPerformed(ActionEvent e) {
          prepareNewDollar();
          ed = false; 
        }
      
    });
    ok.addActionListener(new java.awt.event.ActionListener() {
      public void actionPerformed(ActionEvent e) {
          if(test() & !ed){
                        try {
          
                            dbLayer.insertRecord(dbLayer.getLastRecord()+1, titel.getText(),
                                    Double.parseDouble(kaufwert.getText()) * euroDollarQuotient,
                                    Double.parseDouble(kaufwert.getText()),
                                    Double.parseDouble(aktWert.getText()) * euroDollarQuotient, 
                                    Double.parseDouble(aktWert.getText()),
                                    Integer.parseInt(anzahl.getText()),
                                    (Double.parseDouble(aktWert.getText())*euroDollarQuotient) * Double.parseDouble(anzahl.getText()),
                                    Double.parseDouble(aktWert.getText()) * Double.parseDouble(anzahl.getText()),
                                    (Double.parseDouble(kaufwert.getText())*euroDollarQuotient)*Double.parseDouble(anzahl.getText()), 
                                    Double.parseDouble(kaufwert.getText()) * Double.parseDouble(anzahl.getText()),
                                    (Double.parseDouble(aktWert.getText()) - Double.parseDouble(kaufwert.getText())) * euroDollarQuotient,
                                    Double.parseDouble(aktWert.getText()) - Double.parseDouble(kaufwert.getText()),
                                    kaufDatum.getText(), verkaufDatum.getText(),ed);
                        } catch (SQLException ex) {
                            Logger.getLogger(AktPanel.class.getName()).log(Level.SEVERE, null, ex);
                        } catch (NumberFormatException ne){
                          JOptionPane.showMessageDialog(null, 
                           "Bitte in entsprechende Felder nur Ziffern eingeben!", 
                           "FEHLER", JOptionPane.ERROR_MESSAGE); 
                        }
          System.out.println(dbLayer.getTitle(dbLayer.getLastRecord()));
          if(dbLayer.getTitle(dbLayer.getLastRecord()) == titel.getText()){
              recordCounter=dbLayer.getLastRecord();
              updateWidgets();
          }else{
              JOptionPane.showMessageDialog(null, 
              "Eintragung konnte nicht erfolgen!",
              "FEHLER", JOptionPane.ERROR_MESSAGE); 
          }
          }
        }
      
    });
 }
    
    protected static void updateWidgets() {
        
        
    titel.setText("Titel:    " +dbLayer.getTitle(recordCounter));
    kaufwert.setText("Kaufwert:   (€) " +dbLayer.getKaufWert(recordCounter) + "  , ($) ");
    aktWert.setText("Aktueller Wert:   (€) " +dbLayer.getAktWert(recordCounter)+ "  , ($) ");
    anzahl.setText("Anzahl gekaufter Anlagen:   "+dbLayer.getAnzahl(recordCounter));
    gesamtWertKauf.setText("Insgesamt ausgegebener Betrag:   (€) "+dbLayer.getGesamtWertKauf(recordCounter)+ "  , ($) ");
    gesamtWertAkt.setText("Insgesamter aktueller Wert:   (€) "+dbLayer.getGesamtWertAkt(recordCounter)+ "  , ($) ");
    gewinn.setText("Aktueller Gewinn/Verlust:   (€) "+dbLayer.getGewinn(recordCounter)+ "  , ($) ");
    kaufDatum.setText("Kaufdatum:   "+dbLayer.getKaufDatum(recordCounter));
    verkaufDatum.setText("Verkaufsdatum:   "+dbLayer.getVerkaufDatum(recordCounter));
  }

  protected void firstRecord() {
    recordCounter = 0;
    updateWidgets();
    titel.setEditable(false);
    kaufwert.setEditable(false);
    aktWert.setEditable(false);
    anzahl.setEditable(false);
    gesamtWertKauf.setEditable(false);
    gesamtWertAkt.setEditable(false);
    gewinn.setEditable(false);
    kaufDatum.setEditable(false);
    verkaufDatum.setEditable(false);
  }

  protected void newAkt(){
    
    euro.setText("Euro"); 
    euro.setEnabled(true);
    dollar.setText("Dollar");   
    dollar.setEnabled(true);
    titel.setEditable(false);
    kaufwert.setEditable(false);
    aktWert.setEditable(false);
    anzahl.setEditable(false);
    gesamtWertKauf.setEditable(false);
    gesamtWertAkt.setEditable(false);
    gewinn.setEditable(false);
    kaufDatum.setEditable(false);
    verkaufDatum.setEditable(false);
    verkaufDatum.setText("Eingaben in");
    titel.setText(null);
    kaufwert.setText(null);
    aktWert.setText(null);
    anzahl.setText(null);
    gesamtWertKauf.setText(null);
    gesamtWertAkt.setText(null);
    gewinn.setText(null);
    kaufDatum.setText(null);
}
  
  protected void previousRecord() {
    if (recordCounter > 0) {
      recordCounter--;
      updateWidgets();
    }
  }

  protected void nextRecord() {
    if (recordCounter < (dbLayer.getLastRecord())) {
      recordCounter++;
      updateWidgets();
    }
  }

  protected void lastRecord() {
    recordCounter = dbLayer.getLastRecord();
    updateWidgets();
  }

protected void prepareNewEuro(){
    euro.setText("");
    euro.setEnabled(false);
    ok.setText("Ok");
    ok.setEnabled(true);
    dollar.setEnabled(false);
    dollar.setText("");
    titel.setEditable(true);
    kaufwert.setEditable(true);
    aktWert.setEditable(true);
    anzahl.setEditable(true);
    gesamtWertKauf.setEditable(false);
    gesamtWertAkt.setEditable(false);
    gewinn.setEditable(false);
    kaufDatum.setEditable(true);
    verkaufDatum.setEditable(false);
     titel.setText("Titel");
    kaufwert.setText("Kaufwert in €");
    aktWert.setText("Aktueller Wert in €");
    anzahl.setText("Anzahl");
    gesamtWertKauf.setText("---");
    gesamtWertKauf.setEditable(false);
    gesamtWertAkt.setText("---");
    gesamtWertAkt.setEditable(false);
    gewinn.setText("---");
    gewinn.setEditable(false);
    kaufDatum.setText("Kaufdatum");
    verkaufDatum.setText("---");
    verkaufDatum.setEditable(false);
}
protected void prepareNewDollar(){
    
    ok.setText("Ok");
    ok.setEnabled(true);
    euro.setText("");
    euro.setEnabled(false);
    dollar.setEnabled(false);
    dollar.setText("");
    titel.setEditable(true);
    kaufwert.setEditable(true);
    aktWert.setEditable(true);
    anzahl.setEditable(true);
    gesamtWertKauf.setEditable(false);
    gesamtWertAkt.setEditable(false);
    gewinn.setEditable(false);
    kaufDatum.setEditable(true);
    verkaufDatum.setEditable(false);
     titel.setText("Titel");
    kaufwert.setText("Kaufwert in $");
    aktWert.setText("Aktueller Wert in $");
    anzahl.setText("Anzahl");
    gesamtWertKauf.setText("---");
    gesamtWertKauf.setEditable(false);
    gesamtWertAkt.setText("---");
    gesamtWertAkt.setEditable(false);
    gewinn.setText("---");
    gewinn.setEditable(false);
    kaufDatum.setText("Kaufdatum");
    verkaufDatum.setText("---");
    verkaufDatum.setEditable(false);
    
}

protected int getRecordCounter() {
    return recordCounter;
    }

    void save() {
        throw new UnsupportedOperationException("Not yet implemented");
    }

    void edit() {
        throw new UnsupportedOperationException("Not yet implemented");
    }

    void delete() {
        throw new UnsupportedOperationException("Not yet implemented");
    }

private boolean test(){
    
    boolean ok = true;
    
   
    if(aktWert.getText().isEmpty() || aktWert.getText().equals("Aktueller Wert in €") || 
       aktWert.getText().equals("Aktueller Wert in $") ){
        
      aktWert.setText(kaufwert.getText());
    }
  
    if(titel.getText().isEmpty() | kaufwert.getText().isEmpty() | anzahl.getText().isEmpty()){
           JOptionPane.showMessageDialog(null, "Bitte alle nötigen Daten angeben!", "FEHLER", JOptionPane.ERROR_MESSAGE); 
           ok = false;
    }else{
       ok = false;
    } 
    
    try{
    double kauf = Double.parseDouble(kaufwert.getText());
    double akt = Double.valueOf(aktWert.getText());
    double anz = Double.valueOf(anzahl.getText());
    if(kauf <0 | akt <0 | anz <0){
        JOptionPane.showMessageDialog(null, "Bitte keine negativen Zahlen eingeben!", "FEHLER", JOptionPane.ERROR_MESSAGE); 
           ok = false;
    }
   }catch(java.lang.NumberFormatException nfe){
       JOptionPane.showMessageDialog(null, "Bitte in entsprechende Felder nur Ziffern eingeben!", "FEHLER", JOptionPane.ERROR_MESSAGE); 
   } 
   
   
   return ok;
}

 // Diese Methode liefert einen Boolean zurück, ob ein String ausschließlich
// Zahlen enthält (true) oder auch andere Zeichen (false).    
protected boolean checkLetters(String s) {   
    for(int i = 0; i < s.length(); i++) {
        if(!Character.isDigit(s.charAt(i))) {  
        return false;            
        }
    }
        return true;
    
}
}

Java:
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package lib;

import java.io.FileInputStream;
import java.sql.SQLException;
import java.util.Properties;

/**
 *
 * @author Emanuel_2
 */
public class DbFacade {

  private static HadesDb1 database;
  private Properties dbProperties = new Properties();
  private int lastRecord;

  public DbFacade() {
      
    database = null;
    try {
      database = new HadesDb1();
      lastRecord = database.getLastRow();
    }
    catch (Exception ex) {
      ex.printStackTrace(); // ...................... Datenbank nicht zu starten
      return; // ................................ Im Fehler => Ende des Treibers
    }
    
  }

  protected void finalize() throws SQLException {
   this.close(); // ......................... Datenbank herunterfahren
  }
 
  public String getResults() {
    return "Nicht implementiert";
  }

  public String getTitle(int index) {
    String titel = null;
    try {
      titel = database.getData(index,"TITEL");
    }
    catch (SQLException ex) {
      ex.printStackTrace();
    }
    return titel;
  }

  public String getKaufWert(int index) {
    String kaufwert = null;
    try {
      kaufwert = database.getData(index,"KAUFWERT");
    }
    catch (SQLException ex) {
      ex.printStackTrace();
    }
    return kaufwert;
  }
  public String getKaufWertDollar(int index) {
    String kaufwertdollar = null;
    try {
      kaufwertdollar = database.getData(index,"KAUFWERTDOLLAR");
    }
    catch (SQLException ex) {
      ex.printStackTrace();
    }
    return kaufwertdollar;
  }

  public String getAktWert(int index) {
    String aktwert = null;
    try {
     aktwert = database.getData(index,"AKTWERT");
    }
    catch (SQLException ex) {
      ex.printStackTrace();
    }
    return aktwert;
  }
public String getAktWertDollar(int index) {
    String aktwertdollar = null;
    try {
     aktwertdollar = database.getData(index, "AKTWERTDOLLAR");
    }
    catch (SQLException ex) {
      ex.printStackTrace();
    }
    return aktwertdollar;
  }
  public String getKaufDatum(int index) {
    String kaufdatum = null;
    try {
      kaufdatum = database.getData(index,"KAUFDATUM");
    }
    catch (SQLException ex) {
      ex.printStackTrace();
    }
    return kaufdatum;
  }

  public String getAnzahl(int index) {
   String anzahl = null;
    try {
      anzahl = database.getData(index,"ANZAHL");
    }
    catch (SQLException ex) {
      ex.printStackTrace();
    }
    return anzahl;
  }
  
  public String getGesamtWertAkt(int index) {
    String gesamtwertakt = null;
    try {
      gesamtwertakt = database.getData(index, "GESAMTAKT");
    }
    catch (SQLException ex) {
      ex.printStackTrace();
    }
    return gesamtwertakt;
  }
  public String getGesamtWertAktDollar(int index) {
    String gesamtwertakt = null;
    try {
      gesamtwertakt = database.getData(index, "GESAMTAKTDOLLAR");
    }
    catch (SQLException ex) {
      ex.printStackTrace();
    }
    return gesamtwertakt;
  }
  public String getGesamtWertKauf(int index) {
    String gesamtwert = null;
    try {
      gesamtwert = database.getData(index, "GESAMTKAUF");
    }
    catch (SQLException ex) {
      ex.printStackTrace();
    }
    return gesamtwert;
  }
  public String getGesamtWertKaufDollar(int index) {
    String gesamtwert = null;
    try {
      gesamtwert = database.getData(index, "GESAMTKAUFDOLLAR");
    }
    catch (SQLException ex) {
      ex.printStackTrace();
    }
    return gesamtwert;
  }
  
  public String getGewinn(int index) {
    String gewinn = null;
    try {
      gewinn = database.getData(index, "GEWINN");
    }
    catch (SQLException ex) {
      ex.printStackTrace();
    }
    return gewinn;
  }
  public String getVerkaufDatum(int index) {
    String verkaufsdatum = null;
    try {
      verkaufsdatum = database.getData(index, "VERKAUFSDATUM");
    }
    catch (SQLException ex) {
      ex.printStackTrace();
    }
    return verkaufsdatum;
  }

  public int getLastRecord() {
    return lastRecord;
  }
  
  public void deleteRecord(int index) throws SQLException{
    database.deleteRow(index);
    database.renumber(index);
    lastRecord--;
  }

  public void insertRecord(int id,String titel, double kaufWert, double kaufWertDollar, 
          double AktWert, double AktWertDollar, int Anzahl,double GesamtWertAkt, 
          double GesamtWertAktDollar, double GesamtWertKauf, double GesamtWertKaufDollar, 
          double gewinn,double gewinnDoll, String KaufDatum, String VerkaufDatum, boolean ed)
  throws SQLException {
    database.insertRow(id,titel, kaufWert, kaufWertDollar, AktWert,AktWertDollar, 
            Anzahl,GesamtWertAkt, GesamtWertAktDollar, GesamtWertKauf,GesamtWertKaufDollar,
            gewinn,gewinnDoll,KaufDatum,VerkaufDatum,ed);
  }
  
  public static void close() throws SQLException{
      database.close();
  }
}

Java:
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package lib;
import java.sql.*;


public class HadesDb1 {
    
// Variablen...
    
    static Connection con;
    static Statement stmt;
    static Statement stmt1;
    static DatabaseMetaData dmd;
    
// Stellt Db Verbindung her...
    
    public static void open() throws Exception{
        
    //  Treiber laden u. Con erzeugen
    Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
    con = DriverManager.getConnection("jdbc:derby:anlagenDB;create=true");
        
    stmt = con.createStatement();
    stmt1 = con.createStatement();
    
    dmd = con.getMetaData();
    ResultSet rs = dmd.getTables(null,"APP", "ANLAGEN",null);
    if (!rs.next()) {
    
    String strCreateMyTable = 
    "CREATE table ANLAGEN ("+
    "ID          INTEGER,"+ 
    "TITEL       VARCHAR(250),"+ 
    "KAUFWERT    DOUBLE,"+
    "KAUFWERTDOLLAR DOUBLE,"+
    "AKTWERT     DOUBLE,"+
    "AKTWERTDOLLAR DOUBLE,"+
    "ANZAHL      INTEGER,"+
    "GESAMTAKT   DOUBLE,"+
    "GESAMTAKTDOLLAR DOUBLE,"+
    "GESAMTKAUF  DOUBLE,"+
    "GESAMTKAUFDOLLAR DOUBLE,"+
    "GEWINN      DOUBLE,"
  + "GEWINNDOLLAR DOUBLE,"
  + "KAUFDATUM   VARCHAR(250),"
  + "VERKAUFSDATUM VARCHAR(250),"
  + "ED CHAR(1)"
  + " )"  ;
    stmt.executeUpdate(strCreateMyTable);  
    stmt.executeUpdate("INSERT INTO Anlagen VALUES(1,test,1,1,1,1,1,1,1,1,1,1,1,1,1,1)");  
    }
    }
    
//Schließt Db Verbindung...
    
    public static void close() throws SQLException{
    
    //Objekte schließen...
    stmt.close();
    stmt1.close();
    con.close();
    }
    
    
// Gibt Inhalte aus...
    
    public static String getData(int index, String command) throws SQLException{
    try{   
    open();
    //Statement statement = null;
    ResultSet rs = null;
    Object record = null;
    int colMax;
    String id = new Integer(index).toString(); // Korrekt
    
    stmt = con.createStatement(); // statement objects can be reused with
    rs = stmt.executeQuery("SELECT * FROM Anlagen WHERE id = " + id); // run the query
    
    if(rs.next()){
    record = rs.getObject(command);
    rs.close();
    return record.toString();
    }
    else{
    String error = new String("Fehler beim Laden der Daten!");
    return error;
    }
    }catch(java.lang.NullPointerException jlne){
      String error = new String("Fehler beim Laden der Daten!");
      return error;  
    }catch(java.lang.Exception e){
      String error = new String("Fehler beim Laden der Daten!");
      return error;
    }finally{
        close();
    }
    }
 
    
/**
   * Ermittelt die Anzahl der Datenbankzeilen
   * @return Anzahl der Zeilen
*/
    public int getLastRow() throws SQLException{
    try{
    open();
    int numberOfRows = 0;
    
    stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
                               ResultSet.CONCUR_READ_ONLY);

    ResultSet rs = stmt.executeQuery("SELECT id FROM Anlagen");
    rs.last();
    numberOfRows = rs.getRow();
    rs.beforeFirst();
    rs.close();
    return numberOfRows;
    }catch(java.lang.NullPointerException ne){
      System.out.println("FEHLER beim zeilenzähler!");
      return 0;
    }catch(java.lang.Exception e){
      System.out.println("FEHLER beim zeilenzähler!");
      return 0;
    }finally{
        close();
    }
  }
    
    
// Löscht Datensatz...
    public void deleteRow(int index) throws SQLException {
    try{
    open();
    String id = new Integer(index).toString();
    stmt = con.createStatement();
    int i = stmt.executeUpdate("DELETE FROM Anlagen WHERE id = " + id);
    if (i == -1) {
      System.out.println("HadesDb [deleteRow]: Fehler beim Loeschen"); // Debug
   }}catch(java.lang.Exception e){
      System.out.println("FEHLER beim löschen!");
    }finally{
        close();
    }
  }
    
    
//Nummeriert Datensätze neu...
    public void renumber(int startIndex) throws SQLException {
   try{
    open();
    stmt = con.createStatement();
    int lastRow = getLastRow();
    for (int i = startIndex; i <= lastRow; i++) {
      stmt.executeUpdate("UPDATE Anlagen SET id = " + (i) +
                              " WHERE id = " + (i + 1));
      System.out.println(startIndex); // Debug
      startIndex++;
    }}catch(java.lang.Exception e){
      System.out.println("FEHLER beim löschen!");
    }finally{
        close();
    }
  }
    
// Erstellt neuen Datensatz...
    
    public void insertRow(int id,String titel, double kaufWert, double kaufWertDollar, 
            double AktWert, double AktWertDollar, int Anzahl, double GesamtWertAkt, 
            double GesamtWertAktDollar, double GesamtWertKauf, double GesamtWertKaufDollar, 
            double gewinn,double gewinnDoll, String KaufDatum, String VerkaufDatum,boolean ed)
    throws SQLException {
        
   try{
        open();
      char ed2;
      if(ed){
          ed2 = '1';
      }else{
          ed2 = '0';
      }
    stmt.executeUpdate(
        "INSERT INTO Anlagen" +
        " VALUES('"+ id + "','"+titel+"','" + kaufWert + "','"+ kaufWertDollar + "','"+ AktWert+"','"+AktWertDollar+"','"+
            Anzahl+ "','" + GesamtWertAkt + "','" + GesamtWertAktDollar + "','" + GesamtWertKauf + "','" +
        GesamtWertKaufDollar + "','" + gewinn + "','" + gewinnDoll + "','"+ KaufDatum + "','" + VerkaufDatum + "','" + ed2 +"')");
  }catch(java.lang.Exception e){
      System.out.println("FEHLER beim löschen!");
    }finally{
        close();
    }
    }
    
    public static void dropDb() throws SQLException, Exception{
        open();
        stmt.executeUpdate("DROP TABLE Anlagen");
        close();
    }
}

PS: ich hoffe, ihr versteht etwas vom Quelltext...:-/// (und jmd. kann mir helfen...)
 
Moin,

habe jetzt zwar nur relativ lax durch die vielen Zeilen gescrollt ...

Wo finde ich denn "den entsprechenden Ok-Button" resp. den zugehörigen ActionListener ???:L

Gruß
Klaus
 
Zeile 106 im ersten,

in dem Listener gibts ja extra ein if, welches gegebenenfalls genau dafür sorgt, dass rein gar nichts passiert, auch keine Ausgabe,
schreibe doch vorher eine Ausgabe, um zu sehen ob der Listener drankommt, gib den boolean ed aus,

schreibe im else zum großen if eine Ausgabe oder eine JOptionPane, um zu informieren dass nun wirklich nichts gemacht wird
 
Danke für die schnellen Antworten!!!

@Vfl_freak

der okbutton ist JButton ok im ersten

@SlaterB

hab ich ausprobiert:

Java:
System.out.println(ed);
          if(test() & !ed){
                        try {
          
                            dbLayer.insertRecord(dbLayer.getLastRecord()+1, titel.getText(),
                                    Double.parseDouble(kaufwert.getText()) * euroDollarQuotient,
                                    Double.parseDouble(kaufwert.getText()),
                                    Double.parseDouble(aktWert.getText()) * euroDollarQuotient, 
                                    Double.parseDouble(aktWert.getText()),
                                    Integer.parseInt(anzahl.getText()),
                                    (Double.parseDouble(aktWert.getText())*euroDollarQuotient) * Double.parseDouble(anzahl.getText()),
                                    Double.parseDouble(aktWert.getText()) * Double.parseDouble(anzahl.getText()),
                                    (Double.parseDouble(kaufwert.getText())*euroDollarQuotient)*Double.parseDouble(anzahl.getText()), 
                                    Double.parseDouble(kaufwert.getText()) * Double.parseDouble(anzahl.getText()),
                                    (Double.parseDouble(aktWert.getText()) - Double.parseDouble(kaufwert.getText())) * euroDollarQuotient,
                                    Double.parseDouble(aktWert.getText()) - Double.parseDouble(kaufwert.getText()),
                                    kaufDatum.getText(), verkaufDatum.getText(),ed);
                        } catch (SQLException ex) {
                            Logger.getLogger(AktPanel.class.getName()).log(Level.SEVERE, null, ex);
                        } catch (NumberFormatException ne){
                          JOptionPane.showMessageDialog(null, 
                           "Bitte in entsprechende Felder nur Ziffern eingeben!", 
                           "FEHLER", JOptionPane.ERROR_MESSAGE); 
                        }
          System.out.println(dbLayer.getTitle(dbLayer.getLastRecord()));
          if(dbLayer.getTitle(dbLayer.getLastRecord()) == titel.getText()){
              recordCounter=dbLayer.getLastRecord();
              updateWidgets();
          }else{
              JOptionPane.showMessageDialog(null, 
              "Eintragung konnte nicht erfolgen!",
              "FEHLER", JOptionPane.ERROR_MESSAGE); 
          }
          }else{
              System.out.println("Nothing");
          }

bevor die eintragung passieren soll, muss man zwischen euro oder dollar wählen...
ich habe es mit beiden Buttons getestet. Wenn ed true ist kommt jetzt korrekterweise die konsolenausgabe "nothing".
aber wenn ed false ist, passiert dasselbe...
 
weil test() immer false zurückgibt?
Java:
        if (titel.getText().length() == 0 | kaufwert.getText().length() == 0 | anzahl.getText().length() == 0)
        {
            JOptionPane.showMessageDialog(null, "Bitte alle nötigen Daten angeben!", "FEHLER", JOptionPane.ERROR_MESSAGE);
            ok = false; // false
        }
        else
        {
            ok = false; // oder eben false
        }
einfach immer den Code anschauen, bzw. prüfen wie sich die ok-Variable dort entwickelt

Java:
if(dbLayer.getTitle(dbLayer.getLastRecord()) == titel.getText()){
Strings mit equals vergleichen!

und schreibe || + && statt | + & in den ifs
 
Moin,

ich habe es mit beiden Buttons getestet. Wenn ed true ist kommt jetzt korrekterweise die konsolenausgabe "nothing".
aber wenn ed false ist, passiert dasselbe...
Mal ganz dumm gefragt ... bist Du sicher, dass Du da ein "bitweises UND" ('&') machen willst?

Auch in der Methode "test()" irritieren mich diese beiden Zeilen:
Java:
if(titel.getText().isEmpty() | kaufwert.getText().isEmpty() | anzahl.getText().isEmpty()) ...

if(kauf <0 | akt <0 | anz <0)...
Ist in beiden Fällen 'nur' ein "bitweises ODER" ('|') obwohl ein logischer ODER ('||') wohl sinnvoller werden, oder ?

Gruß
Klaus

[EDIT]Mist, schon wieder zu langsam ...[/EDIT]
 
danke euch beiden schonmal...

jetzt passiert wenigsten etwas...😉

das mit den bitweise-operatoren dachte ich hätte ich verstanden... muss ich aber wohl falsch gedacht haben, wenn das hier unpassend ist...

jetzt kommt noch der fehler:

java.sql.SQLSyntaxErrorException: Die VALUES-Klausel muss mindestens ein Element enthalten. Leere Elemente sind nicht zulässig.

Java:
stmt.executeUpdate(
        "INSERT INTO Anlagen(ID,TITEL,KAUFWERT,KAUFWERTDOLLAR,AKTWERT,AKTWERTDOLLAR,ANZAHL,GESAMTAKT,GESAMTAKTDOLLAR,"
            + "GESAMTKAUF,GESAMTKAUFDOLLAR,GEWINN,GEWINNDOLLAR,KAUFDATUM,VERKAUFSDATUM,ED)" +
        " VALUES("+ id + ","+titel+"," + kaufWert + ","+ kaufWertDollar + ","+ AktWert+","+AktWertDollar+","+
            Anzahl+ "," + GesamtWertAkt + "," + GesamtWertAktDollar + "," + GesamtWertKauf + "," +
        GesamtWertKaufDollar + "," + gewinn + "," + gewinnDoll + ","+ KaufDatum + "," + VerkaufDatum + ",'" + ed2 +"')");
  }catch(java.lang.Exception e){
      System.out.println(e);
    }finally{
        close();
    }

ich hab k.a. warum... ist hier der methodenkopf leer?? ich meine werden keine daten übergeben o. warum??? weil das ist ja eigentlich nicht der fall...
 
übe als erstes mit einer Dummy-Tabelle mit genau EINEM Attribut,
übe auch zunächst ohne zusammengebaute Kommandos, sondern tippe nur fertiges SQL mit dummy-Werten direkt als String in den Quellcode ein,
am besten auch GUI und Listener weglassen..

wenn du die Grundlagen, wie unterschiedliche Angabe von Zahlen + Text + Datum (!), korrekte Kommatrennung, Angabe korrekter Spalten, richtige Anzahl Values usw. alles gemeistert hast,
dann kannst du einen aus Variablen zusammengebauen SQL-String ausgeben und mit dem komplett eingetippen SQL-String bei gleichen Werten vergleichen und jedes vergessene Anführungszeichen, Komma usw. spielend leicht erkennen

das was du da in Zeile 2 bis 6 zusammen-plust, ist einfach ein String am Ende,
einen String kann man in einer Variablen speichern und ausgeben, bevor er an JDBC gereicht wird


Programmieren mag schwer sein, Fehler finden ist es nicht unbedingt, alles nur eine Frage von Fleiß 😉

------

PreparedStatement bietet sich an, z.B. für komplizierte Datum-Übergabe
 
Zuletzt bearbeitet von einem Moderator:
Moin,
das mit den bitweise-operatoren dachte ich hätte ich verstanden... muss ich aber wohl falsch gedacht haben, wenn das hier unpassend ist...
Du musst zwischen dem bitweisen UND/ODER ('&'/'|') und dem logischen UND/ODER ('&&'/'||') unterscheiden. Im bitweisen Fall sind es Operatoren (bspw. dies: Bitweiser Operator ? Wikipedia), da hier die beiden Operanden Bit für Bit verglichen werden, während im logischen Fall um logische Aussagen geht (bspw. dies: Logisches Oder ? Wikipedia) - Stichwort hier auch: Wahrheitstabellen.

Hoffe, es hilft ein wenig weiter 🙂

Gruß
Klaus
 
Hallo!

Tut mir leid,aber ich melde mich doch noch mal zu meinem alten Thread. Ich habe jetzt in einer extra Datei ein Test durchgeführt (wie von Slater B geraten):

Java:
import java.sql.*;
import lib.HadesDb1;
public class testdb {
    
  public static void main(String[] args) throws SQLException, Exception {
    
      
      HadesDb1.execute("INSERT INTO Anlagen(TITEL) VALUES ('hallo')");
      
      String output = HadesDb1.getData(1, "TITEL");
      System.out.println(output);
     
      
  }
}

Java:
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package lib;
import java.sql.*;


public class HadesDb1 {
    
// Variablen...
    
    static Connection con;
    static Statement stmt;
    static Statement stmt1;
    static DatabaseMetaData dmd;
    
// Stellt Db Verbindung her...
    
    public static void open() throws Exception{
        
    //  Treiber laden u. Con erzeugen
    Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
    con = DriverManager.getConnection("jdbc:derby:anlagenDB;create=true");
        
    stmt = con.createStatement();
    stmt1 = con.createStatement();
    
    dmd = con.getMetaData();
    ResultSet rs = dmd.getTables(null,"APP", "ANLAGEN",null);
    if (!rs.next()) {
    
    String strCreateMyTable = 
    "CREATE table ANLAGEN ("+
    "ID          INTEGER,"+ 
    "TITEL       VARCHAR(250),"+ 
    "KAUFWERT    DOUBLE,"+
    "KAUFWERTDOLLAR DOUBLE,"+
    "AKTWERT     DOUBLE,"+
    "AKTWERTDOLLAR DOUBLE,"+
    "ANZAHL      INTEGER,"+
    "GESAMTAKT   DOUBLE,"+
    "GESAMTAKTDOLLAR DOUBLE,"+
    "GESAMTKAUF  DOUBLE,"+
    "GESAMTKAUFDOLLAR DOUBLE,"+
    "GEWINN      DOUBLE,"
  + "GEWINNDOLLAR DOUBLE,"
  + "KAUFDATUM   VARCHAR(250),"
  + "VERKAUFSDATUM VARCHAR(250),"
  + "ED CHAR(1)"
  + " )"  ;
    stmt.executeUpdate(strCreateMyTable);  
    stmt.executeUpdate("INSERT INTO Anlagen VALUES(1,test,1,1,1,1,1,1,1,1,1,1,1,1,1,1)");  
    }
    }
    
//Schließt Db Verbindung...
    
    public static void close() throws SQLException{
    
    //Objekte schließen...
    stmt.close();
    stmt1.close();
    con.close();
    }
    
    
// Gibt Inhalte aus...
    
    public static String getData(int index, String command) throws SQLException, Exception{
    try{
    open();
    //Statement statement = null;
    ResultSet rs = null;
    Object record = null;
    int colMax;
    String id = new Integer(index).toString(); // Korrekt
    
    stmt = con.createStatement(); // statement objects can be reused with
    rs = stmt.executeQuery("SELECT * FROM Anlagen WHERE id = " + id); // run the query
    if(rs.next()){
    record = rs.getObject(command);
    rs.close();
    return record.toString();
    }
    else{
    String error = new String("Fehler beim Laden der Daten!");
    return error;
    }
    }catch(java.lang.NullPointerException jlne){
      String error = new String("Fehler beim Laden der Daten!(NullPointer)");
      return error;  
    
    }finally{
        close();
    }
    }
 
    
/**
   * Ermittelt die Anzahl der Datenbankzeilen
   * @return Anzahl der Zeilen
*/
    public int getLastRow() throws SQLException{
    try{
    open();
    int numberOfRows = 0;
    
    stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
                               ResultSet.CONCUR_READ_ONLY);

    ResultSet rs = stmt.executeQuery("SELECT id FROM Anlagen");
    rs.last();
    numberOfRows = rs.getRow();
    rs.beforeFirst();
    rs.close();
    return numberOfRows;
    }catch(java.lang.NullPointerException ne){
      System.out.println("FEHLER beim zeilenzähler!");
      return 0;
    }catch(java.lang.Exception e){
      System.out.println("FEHLER beim zeilenzähler!");
      return 0;
    }finally{
        close();
    }
  }
    
    
// Löscht Datensatz...
    public void deleteRow(int index) throws SQLException {
    try{
    open();
    String id = new Integer(index).toString();
    stmt = con.createStatement();
    int i = stmt.executeUpdate("DELETE FROM Anlagen WHERE id = " + id);
    if (i == -1) {
      System.out.println("HadesDb [deleteRow]: Fehler beim Loeschen"); // Debug
   }}catch(java.lang.Exception e){
      System.out.println("FEHLER beim löschen!");
    }finally{
        close();
    }
  }
    
    
//Nummeriert Datensätze neu...
    public void renumber(int startIndex) throws SQLException {
   try{
    open();
    stmt = con.createStatement();
    int lastRow = getLastRow();
    for (int i = startIndex; i <= lastRow; i++) {
      stmt.executeUpdate("UPDATE Anlagen SET id = " + (i) +
                              " WHERE id = " + (i + 1));
      System.out.println(startIndex); // Debug
      startIndex++;
    }}catch(java.lang.Exception e){
      System.out.println("FEHLER beim Neunummerieren!");
    }finally{
        close();
    }
  }
    
   public static void execute(String task) throws Exception{
       open();
       stmt.executeUpdate(task);
       close();
   }
    
// Erstellt neuen Datensatz...
    
    public void insertRow(int id,String titel, double kaufWert, double kaufWertDollar, 
            double AktWert, double AktWertDollar, int Anzahl, double GesamtWertAkt, 
            double GesamtWertAktDollar, double GesamtWertKauf, double GesamtWertKaufDollar, 
            double gewinn,double gewinnDoll, String KaufDatum, String VerkaufDatum,boolean ed)
    throws SQLException {
      char ed2;
      if(ed){
          ed2 = '1';
      }else{
          ed2 = '0';
      }
        
        
     String insert = "INSERT INTO Anlagen(ID,TITEL,KAUFWERT,KAUFWERTDOLLAR,AKTWERT,AKTWERTDOLLAR,ANZAHL,GESAMTAKT,GESAMTAKTDOLLAR,"
            + "GESAMTKAUF,GESAMTKAUFDOLLAR,GEWINN,GEWINNDOLLAR,KAUFDATUM,VERKAUFSDATUM,ED)" +
        " VALUES("+ id + ","+titel+"," + kaufWert + ","+ kaufWertDollar + ","+ AktWert+","+AktWertDollar+","+
            Anzahl+ "," + GesamtWertAkt + "," + GesamtWertAktDollar + "," + GesamtWertKauf + "," +
        GesamtWertKaufDollar + "," + gewinn + "," + gewinnDoll + ","+ KaufDatum + "," + VerkaufDatum + ",'" + ed2 +"')";   
   try{
        open();
      
    
    stmt.executeUpdate(insert);
  }catch(java.lang.Exception e){
      System.out.println(e);
      System.out.print(insert);
    }finally{
        close();
    }
    }
    
    public static void dropDb() throws SQLException, Exception{
        open();
        stmt.executeUpdate("DROP TABLE Anlagen");
        close();
    }
}

Allerdings kommt jetzt die Ausgabe "Fehler beim Laden der Daten (aus HadesDb1.getData()).
Das müsste ja bedeuten, dass keine Daten in der Tabelle vorhanden sind, weil genau der Code einem Ungültigen-Cörserstatus-fehler vorbeugen soll.

Das blöde ist, dass er ja beim insert into nicht meckert...:bahnhof:

also müsste der eintrag erfolgen... Häää???

Ich bitte nochmal um Hilfe...

Gruß
E99
 
schreibe nie new String(), du schreibst ja auch [c] String insert = "INSERT INTO Anlagen [..] [/c] und nicht
[c] String insert = new String("INSERT INTO Anlagen [..] [/c]..

Cörser ist zwar erstaunlich originell, aber auch nicht zu empfehlen

----

für
[c]"SELECT * FROM Anlagen WHERE id = " + id[/c]
ginge eine int-Variable, der Parameter direkt, übrigens auch,
man stelle sich vor du wolltest bei insertRow() für alle int und double-Parameter erst aufwendig
> String id = new Integer(index).toString();
schreiben..

PreparedStatement mit setInt() usw. löst das Dilemma endgültig

-----

bisher ist dein Fehler lediglich die Bestätigung dass (falls alles korrekt ist) kein Eintrag mit Id = 1 vorhanden ist,
warum bist du dir so sicher dass nicht eine andere Id denkbar ist?
frag doch die ganze Tabelle ohne WHERE ab, wieviele Einträge gibt es dann?

wie steht es eigentlich um
Java:
stmt.executeUpdate("INSERT INTO Anlagen VALUES(1,test,1,1,1,1,1,1,1,1,1,1,1,1,1,1)");
in der open()-Methode, wird das ausgeführt? das test ohne Anführungszeichen sieht ja verdächtig aus,

bist du dir sicher dass du in deinem Programm auch von allen Exceptions erfährst?
ruhig testweise mal
Java:
if (true) throw new Exception("Fehler");
an manchen Stellen einsetzen
 
Zuletzt bearbeitet von einem Moderator:
Danke für die Hilfe!

Zu dem new String: Keine Ahnung warum ich das geschrieben habe... (keine Absicht...)

Zu Cörser: Ich schreibe häufig schnell und dann schreib man ziemlich von der Seele weg. Wenn ich also mal nicht richtig aufpasse, gerät mal ein Wort falsch. Also lange Rede, kurzer Sinn:

Ich weiß, dass man dieses Wort nicht so schreibt. Gerade Programmierer sollten die englische Sprache beherrschen, was ich auch tue. Also hab bitte keine Angst vor dem Verdummen der Menschheit oder o...:toll:


Das Problem war wirklich das, welches du gepostet hast... also dafür ein großes Dankeschön!!!

Das Testprogramm läuft jetzt. Insert Row () funktioniert auch, aber dafür gibts was anderes...

Ich arbeite mit Netbeans und auf einmal kommt jetzt fast über all eine "unreported java.lang.Exception"-Warnung...

Ich mal, weil das den fehler behoben hat immer eine (wie vorgeschlagen) throws klausel angehängt. Jetzt geht das mit dieser Warnung aber durchs ganze Programm durch... und es kommt zum ExceptionInInitializerError, weil an einer Stelle (static AktPanel...) kein Lösung mehr funktioniert...:

Java:
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package ui;

import java.awt.AWTEvent;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.WindowEvent;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JFrame;
import javax.swing.*;
import lib.DbFacade;
import ui.AktPanel;
import lib.HadesDb;


public class AppWnd extends JFrame {
    
    JPanel contentPane = new JPanel(); // JPanels
    
    static AktPanel topicalAkt = new AktPanel(1);
    
    JPanel totalAkts = new JPanel();
    JPanel tabs = new JPanel();
    
    int recordCounter = topicalAkt.getRecordCounter();
    BorderLayout appBorderLayout = new BorderLayout();
    
    JMenuBar appMenuBar = new JMenuBar();//Bars
    JToolBar appToolBar = new JToolBar();
    JTabbedPane tabPane = new JTabbedPane();
    
    JMenu file = new JMenu();//Menus
    JMenu settings = new JMenu();
    JMenu search = new JMenu();
    JMenu help = new JMenu();
    
    JMenuItem neu = new JMenuItem();
    JMenuItem delete = new JMenuItem();
    JMenuItem exit = new JMenuItem();
    JMenuItem edit = new JMenuItem();
    
    JMenuItem settingsDialog = new JMenuItem();
    JMenuItem passwordSetting = new JMenuItem();
    
    JMenuItem firstRecord = new JMenuItem();
  JMenuItem previousRecord = new JMenuItem();
  JMenuItem nextRecord = new JMenuItem();
  JMenuItem lastRecord = new JMenuItem();

    JMenuItem info = new JMenuItem();
    //Schaltflaechen der Symbolleiste:
  private JButton fileNewButton = new JButton(); // Neuer Datensatz
  private JButton firstRecordButton = new JButton(); // Erster Datensatz
  private JButton previousRecordButton = new JButton(); // Zurueck
  private JButton nextRecordButton = new JButton(); // Vorwaerts
  private JButton lastRecordButton = new JButton(); // Letzter Datensatz
  private JButton helpIndexButton = new JButton(); // Hilfe

  private ImageIcon newRecordImage;//Images
  private ImageIcon saveRecordImage;
  private ImageIcon firstRecordImage;
  private ImageIcon previousRecordImage;
  private ImageIcon nextRecordImage;
  private ImageIcon lastRecordImage;
  private ImageIcon helpIndexImage;
  
  
    public AppWnd() throws Exception{
        
    super("FortuneControl - die Vermögensverwaltung");
    contentPane = new JPanel(); // JPanels
    topicalAkt = new AktPanel(1);
    totalAkts = new JPanel();
    
    appBorderLayout = new BorderLayout();
    
    appMenuBar = new JMenuBar();//Bars
    appToolBar = new JToolBar();
    tabPane = new JTabbedPane(JTabbedPane.TOP,JTabbedPane.SCROLL_TAB_LAYOUT );
    
    file = new JMenu("Datei");//Menus
    settings = new JMenu("Einstellung");
    search = new JMenu("Suche");
    help = new JMenu("Hilfe");
    
    neu = new JMenuItem("Neuer Eintrag");
    edit = new JMenuItem("Bearbeiten");
    delete = new JMenuItem("Löschen");
    exit = new JMenuItem("Beenden");
    
    settingsDialog = new JMenuItem("Euro-Dollar-Kurs...");
    passwordSetting = new JMenuItem("Neues Password...");
    
    firstRecord = new JMenuItem("Erster Eintrag");
  previousRecord = new JMenuItem("Vorheriger Eintrag");
  nextRecord = new JMenuItem("Nächster Eintrag");
  lastRecord = new JMenuItem("Letzter Eintrag");
  
   info = new JMenuItem("Info...");
    //Schaltflaechen der Symbolleiste:
     
  newRecordImage = new ImageIcon(
        AppWnd.class.getResource("newRecord.gif"));//Images
  saveRecordImage = new ImageIcon(
        AppWnd.class.getResource("saveRecord.gif"));
  firstRecordImage = new ImageIcon(AppWnd.class.getResource(
        "firstRecord.gif"));
  previousRecordImage = new ImageIcon(AppWnd.class.getResource(
        "previousRecord.gif"));
  nextRecordImage = new ImageIcon(AppWnd.class.getResource(
        "nextRecord.gif"));
  lastRecordImage = new ImageIcon(AppWnd.class.getResource(
        "lastRecord.gif"));
  helpIndexImage = new ImageIcon(AppWnd.class.getResource("help.gif"));
  
  fileNewButton = new JButton(newRecordImage); // Neuer Datensatz
  firstRecordButton = new JButton(firstRecordImage); // Erster Datensatz
  previousRecordButton = new JButton(previousRecordImage); // Zurueck
  nextRecordButton = new JButton(nextRecordImage); // Vorwaerts
  lastRecordButton = new JButton(lastRecordImage); // Letzter Datensatz
  helpIndexButton = new JButton(helpIndexImage); // Hilfe

  fileNewButton.setToolTipText("Neuer Datensatz");
  firstRecordButton.setToolTipText("Erster Datensatz");
  previousRecordButton.setToolTipText("Vorheriger Datensatz");
  nextRecordButton.setToolTipText("N\u00e4chster Datensatz");
  lastRecordButton.setToolTipText("Letzter Datensatz");
  helpIndexButton.setToolTipText("Hilfe");
  
  appToolBar.add(fileNewButton, null); // Schaltflaeche Neuer Datensatz
    appToolBar.add(firstRecordButton, null); // Schaltflaeche
    appToolBar.add(previousRecordButton, null); // Schaltflaeche
    appToolBar.add(nextRecordButton, null); // Schaltflaeche
    appToolBar.add(lastRecordButton, null); // Schaltflaeche
    appToolBar.add(helpIndexButton, null); // Schaltflaeche
   
    file.add(neu);
    file.add(edit);
    file.add(delete);
    file.add(exit);
    
    
    settings.add(settingsDialog);
    settings.add(passwordSetting);
    
    
    passwordSetting.setEnabled(false);
    help.setEnabled(false);
    
    search.add(firstRecord);
    search.add(previousRecord);
    search.add(nextRecord);
    search.add(lastRecord);
    
    help.add(info);
    
    appMenuBar.add(file);
    appMenuBar.add(settings);
    appMenuBar.add(search);
    appMenuBar.add(help);
    this.setJMenuBar(appMenuBar);
    
    
    tabPane.add("Anlagenregister", topicalAkt);
     tabPane.add("Gesamtes angelegtes Vermögen", totalAkts);
     tabs.setSize(500, 600);
     tabs.add(tabPane);
    
     
    contentPane.setMinimumSize(new Dimension(430, 400));
    contentPane.setPreferredSize(new Dimension(430, 400));
    contentPane.setLayout(appBorderLayout);
    contentPane.add(appToolBar, BorderLayout.NORTH);
    contentPane.add(tabs,BorderLayout.AFTER_LINE_ENDS);
    this.setContentPane(contentPane);
    
    firstRecord.setEnabled(false);
    firstRecordButton.setEnabled(false);
    previousRecord.setEnabled(false);
    previousRecordButton.setEnabled(false);
    
    this.setVisible(true);
    neu.addActionListener(new java.awt.event.ActionListener() {
      public void actionPerformed(ActionEvent e) {
        topicalAkt.newAkt();
      }
    });
    edit.addActionListener(new java.awt.event.ActionListener() {
      public void actionPerformed(ActionEvent e) {
        topicalAkt.edit();
      }
    });
    delete.addActionListener(new java.awt.event.ActionListener() {
      public void actionPerformed(ActionEvent e) {
        topicalAkt.delete();
      }
    });
  
    exit.addActionListener(new java.awt.event.ActionListener() {
      public void actionPerformed(ActionEvent e) {
                try {
                    exitApp(e);
                } catch (SQLException ex) {
                    Logger.getLogger(AppWnd.class.getName()).log(Level.SEVERE, null, ex);
                }
      }
    });
  settingsDialog.addActionListener(new java.awt.event.ActionListener() {
      public void actionPerformed(ActionEvent e) {
        JFrame set = new SettingsDialog();
        set.setSize(430,150);
        Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
    Dimension frameSize = set.getSize();
    set.setLocation((screenSize.width - frameSize.width) / 2, (screenSize.height - frameSize.height) / 2);
        set.setVisible(true);
      }
    });
  passwordSetting.addActionListener(new java.awt.event.ActionListener() {
      public void actionPerformed(ActionEvent e) {
        JFrame set = new SettingPassword(true);
        set.setSize(100,100);
      }
    });
  firstRecord.addActionListener(new java.awt.event.ActionListener() {
      public void actionPerformed(ActionEvent e) {
        firstRecord();
      }
    });
  previousRecord.addActionListener(new java.awt.event.ActionListener() {
      public void actionPerformed(ActionEvent e) {
        previousRecord();
      }
    });
  nextRecord.addActionListener(new java.awt.event.ActionListener() {
      public void actionPerformed(ActionEvent e) {
        nextRecord();
      }
    });
  lastRecord.addActionListener(new java.awt.event.ActionListener() {
      public void actionPerformed(ActionEvent e) {
        lastRecord();
      }
    });
  
  firstRecordButton.addActionListener(new java.awt.event.ActionListener() {
      public void actionPerformed(ActionEvent e) {
        firstRecord();
      }
    });
  fileNewButton.addActionListener(new java.awt.event.ActionListener() {
      public void actionPerformed(ActionEvent e) {
        topicalAkt.newAkt();
      }
    });
  
  info.addActionListener(new java.awt.event.ActionListener() {
      public void actionPerformed(ActionEvent e) {
        notImplemented();
      }
    });
  previousRecordButton.addActionListener(new java.awt.event.ActionListener() {
      public void actionPerformed(ActionEvent e) {
        previousRecord();
      }
    });
  nextRecordButton.addActionListener(new java.awt.event.ActionListener() {
      public void actionPerformed(ActionEvent e) {
        nextRecord();
      }
    });
  lastRecordButton.addActionListener(new java.awt.event.ActionListener() {
      public void actionPerformed(ActionEvent e) {
        lastRecord();
      }
    });
helpIndexButton.addActionListener(new java.awt.event.ActionListener() {
      public void actionPerformed(ActionEvent e) {
        notImplemented();
      }
    });

    }
    
    private void notImplemented() {
    JOptionPane.showConfirmDialog(null,
                                  "Funktion nicht implementiert.",
                                  "Nestor",
                                  JOptionPane.DEFAULT_OPTION,
                                  JOptionPane.WARNING_MESSAGE);
  }
    
     public void exitApp(ActionEvent e) throws SQLException {
    int antwort = JOptionPane.showConfirmDialog(null, "Möchten Sie wirklich beenden?",
            "FortuneControl beenden?", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE);
    if(antwort == JOptionPane.YES_OPTION){
        DbFacade.close();           
        System.exit(0);   
   }
                if(antwort == JOptionPane.NO_OPTION){
                   setVisible(true);
                }
  }
  
  
    private void firstRecord() throws Exception {
    topicalAkt.firstRecord();
    firstRecordButton.setEnabled(false);
    firstRecord.setEnabled(false);
    previousRecordButton.setEnabled(false);
    previousRecord.setEnabled(false);
    nextRecordButton.setEnabled(true);
    nextRecord.setEnabled(true);
    lastRecordButton.setEnabled(true);
    lastRecord.setEnabled(true);
  }

  private void previousRecord() throws Exception {
    topicalAkt.previousRecord();
    //firstRecordButton.setEnabled(true);
    //lastRecordButton.setEnabled(true);
    nextRecordButton.setEnabled(true);
    nextRecord.setEnabled(true);
    lastRecordButton.setEnabled(true);
    lastRecord.setEnabled(true);
  }

  private void nextRecord() throws Exception {
    topicalAkt.nextRecord();
    firstRecordButton.setEnabled(true);
    firstRecord.setEnabled(true);
    previousRecordButton.setEnabled(true);
    previousRecord.setEnabled(true);
    //nextRecordButton.setEnabled(true);
    //lastRecordButton.setEnabled(true);
  }

  private void lastRecord() throws Exception {
    topicalAkt.lastRecord();
    firstRecordButton.setEnabled(true);
    firstRecord.setEnabled(true);
    previousRecordButton.setEnabled(true);
    previousRecord.setEnabled(true);
    nextRecordButton.setEnabled(false);
    nextRecord.setEnabled(false);
    lastRecordButton.setEnabled(false);
    lastRecord.setEnabled(false);
  }
  
  

  protected void processWindowEvent(WindowEvent e) {
    super.processWindowEvent(e);
    if (e.getID() == WindowEvent.WINDOW_CLOSING) {
            try {
                exitApp(null);
            } catch (SQLException ex) {
                Logger.getLogger(AppWnd.class.getName()).log(Level.SEVERE, null, ex);
            }
      
    }
  }
}

Naja vielleicht hast du ja noch einen Tipp...

Ps: Könntest du das mit der int-Variable(oder preparedstmt) in insertRecord() nochmal näher erklären???
 
try catch geht statt weiterleiten, für die statische Initialisierung spätestens in einem static-Block

static {
try statische Variable initailisieren catch usw.
}

-------

einen int kann man direkt zu String adden per +
 
dann hast du die Variable wahrscheinlich dort deklariert statt sie nur zu initialisieren,
vergleiche es mit einem Instanzattribut vs lokale Variable im normalen Konstruktor
 
man, wie das nervt, du postest ja nichtmal Code von deinem nicht funktionierenden Beispiel,
aber führt wohl kein Weg dran vorbei:

static int x;
static {
x = 4;
}

das war nun schwer
 
Hey!!! Krieg dich mal wieder ein!!!

1. Hast du ja schon den, um den es geht. Nämlich in appwnd.java... Außerdem habe ich das, was du da gepostet hast einfach nicht so leicht verstanden und wollte eine Veranschaulichung...

Und du sagst es ja... Das war nicht schwer und trotzdem hast du mir geholfen... Also??? Was ist so schlimm daran???

Natürlich trotzdem danke!
 
Ok hier bin ich nochmal...
Ich habs so probiert, aber es funzt immer noch nicht!

hier der code, so wie er jetzt ist:

Java:
static AktPanel topicalAkt;

static{
        try {
            topicalAkt = new AktPanel(1);
        } catch (Exception ex) {
           ex.printStackTrace();
        }
    }
    topicalAkt = new AktPanel(1);

in der letzten zeile sagt er:

cannot find symbol:

class topicalAkt

Wenn's nicht zu sehr stört...
 
zweimal dieselbe Codezeile zu coden, ohne Erklärung, das nervt schon, denn ergibt keinen Sinn,
abgesehen von der Grundregel mal wieder, dass man Variable = Wert nicht direkt in Klassen schreiben kann,
die Zeile muss weg und gut ist?
 
ok. Tut mir leid...

Das war dumm von mir... :-(\

Es war natürlich auch die richtige Lösung.

ich bin zwar noch nicht ganz durch mit den Problemen (abfrage aus gui funkt noch nicht), aber ich werds erstmal allein versuchen, bevor ich dich damit nerve...

danke!!!
 
Also gut den letzten Fehler habe ich selbst gefunden... Systematisches Suchen hilft!!!:lol:

trotzdem nochmal danke!!!
 

Neue Themen


Zurück
Oben