Hallo,
ich versuche von meinem Verbrauchsrechner(Strom, Gas) errechnete Daten in eine SQLite Datenbank zu schreiben.
Doch dies will nicht gelingen. Die Datenbank Einbindung an sich funktioniert. Manuelles reinschreiben über insert() ist kein Problem.
Doch sobald ich Versuche die errechneten Daten reinzuschreiben geht es nicht.
Erst habe ich es mit dem direkten Aufruf über ein Objekt.Variable versucht(wie, auch noch im Quelltext zu sehen), was aber nicht funktionierte.
Dann habe ich es über Getter in der StromPanel Klasse versucht auch nichts. Danach habe ich es noch mit Settern in der Verbrauchsrechner Klasse versucht doch nichts.
Hier noch ein kleines UML Diagramm für eine Übersicht:
Die Klasse Verbauchsrechner:
DatenSchreiben für die Einbindung der Datenbank:
Ausschnitt StromPanel:
Woran könnte dies liegen?
MFG
MasterShredder
ich versuche von meinem Verbrauchsrechner(Strom, Gas) errechnete Daten in eine SQLite Datenbank zu schreiben.
Doch dies will nicht gelingen. Die Datenbank Einbindung an sich funktioniert. Manuelles reinschreiben über insert() ist kein Problem.
Doch sobald ich Versuche die errechneten Daten reinzuschreiben geht es nicht.
Erst habe ich es mit dem direkten Aufruf über ein Objekt.Variable versucht(wie, auch noch im Quelltext zu sehen), was aber nicht funktionierte.
Dann habe ich es über Getter in der StromPanel Klasse versucht auch nichts. Danach habe ich es noch mit Settern in der Verbrauchsrechner Klasse versucht doch nichts.
Hier noch ein kleines UML Diagramm für eine Übersicht:
Die Klasse Verbauchsrechner:
Java:
package hauptprogramm;
import subclasses.Aufzeichnungen;
import java.awt.BorderLayout;
import java.awt.event.*;
import javax.swing.*;
import datenbank.DatenbankSchreiben;
/**
* Verbrauchsrechner: Zur Ermittlung meines Strom und Gas Verbrauches
* @author MasterShredder
* @version 2.0
*/
public class Verbrauchsrechner {
public void run() {
JFrame frame = new JFrame();
GasPanel gp = new GasPanel();
StromPanel sp = new StromPanel();
Aufzeichnungen aufzeichnung = new Aufzeichnungen(gp, sp);
//Erstellung Menübar
JMenuBar bar = new JMenuBar();
JMenu werteMenu = new JMenu("Werte");
JMenu speichernMenu = new JMenu("Werte speichern");
//GasPanel speichern
JMenuItem speiGas = new JMenuItem("Gas Panel");
speiGas.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
aufzeichnung.gasSchreiben();
}
});
//StromPanel speichern
JMenuItem speiStrom = new JMenuItem("Strom Panel");
speiStrom.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
DatenbankSchreiben stromwerteSchreiben = new DatenbankSchreiben();
StromPanel getStromPanel = new StromPanel();
// insert new rows
stromwerteSchreiben.insert(getStromPanel.aktStand, "juhu");
//Alle Zeilen ausgeben
stromwerteSchreiben.selectAll();
}
});
speichernMenu.add(speiGas);
speichernMenu.add(speiStrom);
werteMenu.add(speichernMenu);
bar.add(werteMenu);
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
frame.add(gp, BorderLayout.CENTER);
frame.add(sp, BorderLayout.EAST);
frame.add(bar, BorderLayout.NORTH);
frame.setSize(1000, 450);
frame.setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(() -> new Verbrauchsrechner().run());
}
}
DatenSchreiben für die Einbindung der Datenbank:
Java:
package datenbank;
import java.sql.Statement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class DatenbankSchreiben {
/**
* Connect to the verdaten.db database
*
* @return the Connection object
*/
private Connection connect() {
// SQLite connection string
String url = "jdbc:sqlite:verdaten.db";
Connection conn = null;
try {
conn = DriverManager.getConnection(url);
} catch (SQLException e) {
System.out.println(e.getMessage());
}
return conn;
}
/**
* Insert a new row into the Strom table
*
* @param a
* @param b
*/
public void insert(double a, String b) {
String sql = "INSERT INTO strom(a,b) VALUES(?,?)";
try (Connection conn = this.connect();
PreparedStatement pstmt = conn.prepareStatement(sql)) {
pstmt.setDouble(1, a);
pstmt.setString(2, b);
pstmt.executeUpdate();
} catch (SQLException e) {
System.out.println(e.getMessage());
}
}
//selectAll() Method
public void selectAll(){
String sql = "SELECT a, b FROM strom";
try (Connection conn = this.connect();
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(sql)){
// loop through the result set
while (rs.next()) {
System.out.println(rs.getDouble("a") + "\t" +
rs.getString("b"));
}
} catch (SQLException e) {
System.out.println(e.getMessage());
}
}
}
Ausschnitt StromPanel:
Java:
public class StromPanel extends JPanel {
//Attribute
private static double PREISKWH=23.54, ZAEHLERSTANDKELLER=114893, GRUNDGEBUEHR=81.81, VORJHBETRAG=398.23, VORJHBETRAGOGRUND=257.29;
public double aktStand, zaehlerstandEingabe, aktKosten, differenzVJ, kostenOGrundg, diffVJoGrundg;
//Einheiten
public String kwhEin="kWh",euroEin="\u20AC";
/**
* Verrechnen: Aktueller Stand wird ermittelt
* Aktuelle Kosten ermitteln(Stand/kWh * Preis/kWh / 100(in Euro umwandeln) + Grundgebühr + 19% UST.
* Die Differenz zum Vorjahr wird ermittelt
* Ausgabe einmal mit und ohne Grundgebuehr
*/
private void verrechnen() {
aktStand = zaehlerstandEingabe - ZAEHLERSTANDKELLER;
kostenOGrundg = Math.round(aktStand * PREISKWH / 100);
aktKosten = Math.round(kostenOGrundg + GRUNDGEBUEHR * 1.19);
differenzVJ = Math.round(aktKosten - VORJHBETRAG);
diffVJoGrundg = Math.round(kostenOGrundg - VORJHBETRAGOGRUND);
}
//Button Aufruf verrechnen()
JButton btnOk = new JButton("OK");
gbc.anchor = GridBagConstraints.CENTER;
gbl(1, 6, 1, 1);
gbc.ipadx = 30;
gbc.ipady = 3;
btnOk.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
zaehlerstandEingabe = Double.parseDouble(tFzaehlerstandEingabe.getText());
verrechnen();
anzAktKosten.setText(aktKosten + "");
anzDifferenzVJ.setText(differenzVJ + "");
anzAktStand.setText(aktStand + "");
anzKostenOgrundG.setText(kostenOGrundg + "");
anzDiffVjOgrundg.setText(diffVJoGrundg + "");
}
});
// Mit Enter auslössen
tFzaehlerstandEingabe.addKeyListener(new KeyListener() {
@Override
public void keyTyped(KeyEvent e) {
}
@Override
public void keyReleased(KeyEvent e) {
}
@Override
public void keyPressed(KeyEvent e) {
if (e.getKeyCode()==KeyEvent.VK_ENTER) {
zaehlerstandEingabe = Double.parseDouble(tFzaehlerstandEingabe.getText());
verrechnen();
anzAktKosten.setText(aktKosten + "");
anzDifferenzVJ.setText(differenzVJ + "");
anzAktStand.setText(aktStand + "");
anzKostenOgrundG.setText(kostenOGrundg + "");
anzDiffVjOgrundg.setText(diffVJoGrundg + "");
}
}
});
add(btnOk, gbc);
}
Woran könnte dies liegen?
MFG
MasterShredder