SALDO berechnen SQL/Textfelder

Hallo,

ich habe über den my sql server 5.6 eine Datenbank angelegt.
Es gibt eine Tabelle Verkauf und eine Tabelle Einkauf. In Java
habe ich eine GUI angelegt mit welcher ich neue Datensätze in
die beiden Tabellen schreiben kann und in der GUI wiederum 
diese über JTables auch anzeigen kann.
Dies funktioniert.

Jetzt möchte ich in der GUI zusätzlich die Summen der Verkäufe
und Einkäufe berechnen und jeweils in einem Textfeld anzeigen.
Dazu gibt es in den genannten Tabellen die Spalten Verkaufspreis
und Einkaufspreis. Das sind beides int Datentypen. Ferner soll der
Saldo berechnet werden.

Aktueller Ablauf:
Bei Klick auf den Button „Verkäufe berechnen“ wird der SQL Befehl

„SELECT SUM(Verkaufspreis)FROM Verkauf“ ausgeführt.
Im Textfeld erscheint: Summe Verkäufe: [[369]].

Bei Klick auf den Button „Einkäufe berechnen“ wird der SQL Befehl

„SELECT SUM(Einkaufspreis)FROM Einkauf“ ausgeführt.
Im Textfeld erscheint: Summe Einkäufe: [[46]].

Bei Klick auf den Button „Saldo berechnen“ wird folgendes durchgeführt:
int ergebnis = wertverkauf-werteinkauf; System.out.println(ergebnis);
String saldo = String.valueOf(ergebnis);
textField_11.setText(saldo);
(ich versuche die Ergbnisse aus den beiden Textfeldern zu
verwenden, also ohne erneuten SQL Abfrage)
Im Textfeld erscheint eine 0.

Die Summen sind zwar korrekt, aber In der Console in Eclipse erscheint:
java.lang.NumberFormatException: For input string: „[[369]]“

java.lang.NumberFormatException: For input string: „[[46]]“

0

Ich denke es gibt zwei Probleme: Es werden die beiden ersten
 Fehlermeldungen ausgeworfen da die beiden Spalten Int
Datentypen sind, ich diese aber in einem Textfeld ausgeben lassen
will. Danach versuche ich den Saldo zu berechnen, was nicht geht
weil vermutlich vorher schon die Fehler aufgetreten sind.

Ich denke es gibt zwei Lösungsansätze:

  1. die SQL Befehle zu CASTEN über CAST(). Das heisst zu
    versuchen während der Abfrage aus dem int ein String zu machen
    und zu hoffen das die beiden ersten Fehlermeldungen nicht mehr
    auftreten und ich so den Saldo berechnen kann. Allerdings weiss
    ich nicht ob das funktioniert. Im übrigen habe ich den Befehl für die
    Ausgabe im Textfeld einmal auskommentiert, die Fehlermeldung
    erscheint aber trotzdem.

  2. ich berechne den Saldo nicht über die Ergebnisse aus den beiden
    Textfeldern Summe Verkäufe und Summe Einkäufe sondern fürhre
    auch wenn ich den Button „Saldo berechnen“ eine SQL Abfrage durch,
    mit dem Ziel in dieser einen Abfrage die Verkaufssumme und die
    Einkaufssumme zu berechnen und anschließend den Saldo zu
    berechnen. Das Ergebnis wird im Textfeld ausgegeben.

Hier der java code:

//Verkäufe berechnen
JButton btnVerkufeBerechnnen =
new JButton(„Verk\u00E4ufe berechnen“);
btnVerkufeBerechnnen.setFont( new Font(„Arial“, Font.PLAIN, 11)); btnVerkufeBerechnnen.addActionListener( new ActionListener()
{
public void actionPerformed(ActionEvent arg0)
{
buttonausfuehren3();
}
private void buttonausfuehren3()
{
Vector columnNames3 = new Vector();
Vector data3 = new Vector();
Vector columntype3 = new Vector();
Vector columnindex3 = new Vector();
try
{
Class.forName(„com.mysql.jdbc.Driver“).newInstance();
String url3=„jdbc:mysql://localhost/pizzashop2“;
Connection conn3=DriverManager.getConnection(url3,user,pw);

String sql3 =„SELECT SUM(Verkaufspreis)FROM Verkauf“;
Statement stmt3=conn3.createStatement();
ResultSet rs3=stmt3.executeQuery(sql3);
ResultSetMetaData rsmd3=rs3.getMetaData();
int columns3=rsmd3.getColumnCount();
for ( int i = 1; i
columnNames3.addElement( rsmd3.getColumnName(i) );
}
while (rs3.next())
{
Vector row = new Vector(columns3);
for ( int i = 1; i
data3.addElement( row );
}
String verkaufsumme = String.valueOf(data3);
textField_9.setText(verkaufsumme);
rs3.close();
stmt3.close();
int wertverkauf = Integer.parseInt(verkaufsumme);
} catch (Exception e)
{
System.out.println( e );
}
}}
);
//Ende
JLabel lblSummeVerkufe = new JLabel(„Summe Verk\u00E4ufe:“); lblSummeVerkufe.setFont( new Font(„Arial“, Font.PLAIN, 11));
textField_9 = new JTextField(); textField_9.setColumns(10);

//Einkäufe berechnen JButton btnEinkufeBerechnen =
new JButton(„Eink\u00E4ufe berechnen“);
btnEinkufeBerechnen.setFont( new Font(„Arial“, Font.PLAIN, 11));
btnEinkufeBerechnen.addActionListener( new ActionListener()
{
public void actionPerformed(ActionEvent arg0)
{ buttonausfuehren4();
}
private void buttonausfuehren4()
{
Vector columnNames4 = new Vector();
Vector data4 = new Vector();
Vector columntype4 = new Vector();
Vector columnindex4 = new Vector();
try
{ Class.forName(„com.mysql.jdbc.Driver“).newInstance();
String url4=„jdbc:mysql://localhost/pizzashop2“;
Connection conn4=DriverManager.getConnection(url4,user,pw);
String sql4 =„SELECT SUM(Einkaufspreis)FROM Einkauf“;
Statement stmt4=conn4.createStatement(); 
ResultSet rs4=stmt4.executeQuery(sql4);
ResultSetMetaData rsmd4=rs4.getMetaData();
int columns4=rsmd4.getColumnCount();
for ( int i = 1; i
columnNames4.addElement( rsmd4.getColumnName(i) );
} while (rs4.next())
{
Vector row = new Vector(columns4);
for ( int i = 1; i data4.addElement( row );
}
String einkaufsumme = String.valueOf(data4);
textField_10.setText(einkaufsumme);
rs4.close();
stmt4.close();
int werteinkauf = Integer.parseInt(einkaufsumme);
} catch (Exception e)
{
System.out.println( e );
}
}}
);
JLabel lblSummeEinkufe = new JLabel(„Summe Eink\u00E4ufe:“); lblSummeEinkufe.setFont( new Font(„Arial“, Font.PLAIN, 11));
textField_10 = new JTextField(); textField_10.setColumns(10);

//Saldo berechnnen JButton btnSaldoBerechnen =
new JButton(„Saldo berechnen“);
btnSaldoBerechnen.setFont( new Font(„Arial“, Font.PLAIN, 11));
btnSaldoBerechnen.addActionListener( new ActionListener()
{
public void actionPerformed(ActionEvent arg0)
{
buttonausfuehren5(0, 0);
}
private void buttonausfuehren5( int wertverkauf, int werteinkauf) {
//int verkauf = data3;
//int einkauf = data4;
//Integer verkaufInteger = new Integer(verkauf);
//Integer einkaufInteger = new Integer(einkauf);
//int summe = verkauf-einkauf;
//Integer summeInteger = new Integer(summe);
//String ergebnis = summeInteger.toString();
//String ergebnis = Integer.toString(summe);
//textField_11.setText(ergebnis);
      //String verkauf = textField_9.getText();
//String einkauf = textField_10.getText();
//int verkauf1 = Integer.parseInt(verkauf);
//int einkauf1 = Integer.parseInt(einkauf);
//int saldo = verkauf1-einkauf1; //String saldo1 = String.valueOf(saldo); //textField_11.setText(saldo1);

int
ergebnis = wertverkauf-werteinkauf;
System.out.println(ergebnis);
String saldo = String.valueOf(ergebnis);
textField_11.setText(saldo); }} );

Könnt ihr mir weiterhelfen?
danke

Hallo Martin

Ist es möglich, dein Problem auf 5 Zeilen zu formulieren?
Das wäre nett.

Danke, Gruss,
– ZEBU

Hallo ZEBU,

wie müsste ich meine SQL Abfrage schreiben, um gleichzeitig die Summen aus den beiden Spalten Verkaufspreis und Einkaufspreis (aus Tabellen Verkauf und Einkauf)) zu ermitteln, daraus den Saldo berechnen (Summe Spalte Verkaufspreis- Summe Spalte Einkaufspreis = Saldo) und diesen Saldo in einem Textfeld auf meiner Java gui auszugeben?