Hallo zusammen,
ich schreiben im Moment ein kleines Progrämmchen zur Verwaltung von Photovoltaikanlagen. Während der jetzigen Phase läuft mein Datenbank noch per XAMPP auf /localhost.
Ich fummle jetzt seit 2 Stunden an folgendem Fehler rum, krieg ihn aber einfach nicht los:
Ich weiß zwar, was Java mir mit dieser Fehlermeldung sagen will, finde aber den Fehler nicht...
Hier noch mein Code:
Die Parameter für den Konstruktor kommen aus einer Eingabemaske und sind auf keine Fall null...
Wär echt super, wenn mir jemand weiterhelfen könnte...bin gerade leicht am verzweifeln...:autsch:
ich schreiben im Moment ein kleines Progrämmchen zur Verwaltung von Photovoltaikanlagen. Während der jetzigen Phase läuft mein Datenbank noch per XAMPP auf /localhost.
Ich fummle jetzt seit 2 Stunden an folgendem Fehler rum, krieg ihn aber einfach nicht los:
Java:
java.sql.SQLException: Column count doesn't match value count at row 1
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:946)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2985)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1631)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1723)
at com.mysql.jdbc.Connection.execSQL(Connection.java:3283)
at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1332)
at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1604)
at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1519)
at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1504)
at speicherklassen.NeuesPVProjekt.berechnungsbasisFuellen(NeuesPVProjekt.java:174)
at speicherklassen.NeuesPVProjekt.projektAnlegen(NeuesPVProjekt.java:93)
at speicherklassen.NeuesPVProjekt.<init>(NeuesPVProjekt.java:62)
at eingabe.NeuesPVProjektEingeben.PVProjektSpeichern(NeuesPVProjektEingeben.java:727)
at eingabe.NeuesPVProjektEingeben.access$27(NeuesPVProjektEingeben.java:572)
at eingabe.NeuesPVProjektEingeben$11.actionPerformed(NeuesPVProjektEingeben.java:543)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$400(Unknown Source)
at java.awt.EventQueue$2.run(Unknown Source)
at java.awt.EventQueue$2.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
Ich weiß zwar, was Java mir mit dieser Fehlermeldung sagen will, finde aber den Fehler nicht...
Hier noch mein Code:
Java:
package speicherklassen;
import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import datenbankVerbinden.DatenbankVerbindung;
public class NeuesPVProjekt {
///////////////////////////////////////////////////
////Variablen
///////////////////////////////////////////////////
private String projektName;
private java.sql.Date inbetriebnahme;
private double anschaffungskosten;
private double stromkostenEVU;
private double einspeiseverguetung;
private double eigenverbrauchsverguetung;
private boolean eigenverbrauchsverguetungSpezial;
private double eigenverbrauchsanteil;
private double eigenverbrauchsverguetungUnterAnteil;
private double eigenverbrauchsverguetungUeberAnteil;
///////////////////////////////////////////////////
////Konstruktoren
///////////////////////////////////////////////////
/**
* Konstruktor für ein neues Projekt
* @param projektName --> Name des Projekts
* @param inbetriebnahme --> Datum der Inbetriebnahme
* @param anschaffungskosten --> Anschaffungskosten der PV-Anlage
* @param stromkostenEVU --> Stromkosten des aktuellen Stromversorgers
* @param einspeisevergütung --> Einspeiseverguetung
* @param eigenverbrauchsverguetung --> Verguetung des Eigenbedarfs
* @param eigenverbrauchsvergütungSpezial --> Abgeänderte Vergütung des Eigenbedarfs für bestimmte Prozentsätze
* @param eigenverbrauchsanteil --> Benötigter Prozentsatz für geänderte Eigenbedarfsvergütung
* @param eigenverbrauchsvergütungUnterAnteil --> Vergütung, wenn Anteil unter benötigtem Prozentsatz
* @param eigenverbrauchsvergütungUeberAnteil --> Vergütung, wenn Anteil über benötigtem Prozentsatz
*/
public NeuesPVProjekt (String projektName,
Date inbetriebnahme,
double anschaffungskosten,
double stromkostenEVU,
double einspeisevergütung,
double eigenverbrauchsverguetung,
boolean eigenverbrauchsvergütungSpezial,
double eigenverbrauchsanteil,
double eigenverbrauchsvergütungUnterAnteil,
double eigenverbrauchsvergütungUeberAnteil) {
this.projektName = projektName;
this.inbetriebnahme = inbetriebnahme;
this.anschaffungskosten = anschaffungskosten;
this.stromkostenEVU = stromkostenEVU;
this.einspeiseverguetung = einspeisevergütung;
this.eigenverbrauchsverguetung = eigenverbrauchsverguetung;
this.eigenverbrauchsverguetungSpezial = eigenverbrauchsvergütungSpezial;
this.eigenverbrauchsanteil = eigenverbrauchsanteil;
this.eigenverbrauchsverguetungUnterAnteil = eigenverbrauchsvergütungUnterAnteil;
this.eigenverbrauchsverguetungUeberAnteil = eigenverbrauchsvergütungUeberAnteil;
if (projektAnlegen()) {
System.out.println("Projekt erfolgreich angelegt!");
}
}
///////////////////////////////////////////////////
////Private Methoden
///////////////////////////////////////////////////
/**
* Anlegen einer neuen DB und herstellen der Verbindung mit der neuen DB
* @return --> "true" für erfolgreiches Anlegen / "false" für Fehler beim Anlegen
*/
@SuppressWarnings("finally")
private boolean projektAnlegen() {
boolean angelegt = false;
PreparedStatement preStmt;
try {
//DB anlegen
String update = "CREATE DATABASE pv_"+projektName;
preStmt = DatenbankVerbindung.CON.prepareStatement(update);
preStmt.executeUpdate();
System.out.println("Datenbank angelegt!");
//Neue DB verbinden
@SuppressWarnings("unused")
DatenbankVerbindung neueVerbindung = new DatenbankVerbindung ("pv_"+projektName);
System.out.println("Datenbank gewechselt!");
//Berechnungsbasis erzeugen
boolean berechnungsbasisErzeugt = berechnungsbasisErzeugen();
if(berechnungsbasisErzeugt) {
boolean berechnungsbasisGefuellt = berechnungsbasisFuellen();
if(berechnungsbasisGefuellt) {
System.out.println("Berechnungsbasis erfolgreich angelegt und gefüllt!");
angelegt = true;
} else {
System.out.println("Berechnungsbasis erfolgreich angelegt, aber Fehler beim Füllen!");
}
} else {
System.out.println("Fehler beim Anlegen der Berechnungsbasis!");
}
//TODO Ablesungs-Tabelle erzeugen
} catch (SQLException e) {
// TODO Logeintrag
// TODO Fehleranzeige
e.printStackTrace();
} finally {
return angelegt;
}
}
/**
* Anlegen der Berchnungsbasis-Tabelle
* @return --> "true" für erfolgreiches Anlegen / "false für Fehler beim Anlegen
*/
@SuppressWarnings("finally")
private boolean berechnungsbasisErzeugen() {
boolean erzeugt = false;
PreparedStatement stmt;
try
{
String update = "CREATE TABLE berechnungsbasis(" +
"b_inbetriebnahme DATE NOT NULL," +
"b_anschaffungskosten DOUBLE NOT NULL,"+
"b_stromkostenEVU DOUBLE NOT NULL," +
"b_einspeiseverguetung DOUBLE NOT NULL," +
"b_eigenverbrauchsverguetung DOUBLE," +
"b_eigenverbrauchsverguetungSpezial BOOLEAN," +
"b_eigenverbrauchsanteil DOUBLE," +
"b_eigenverbrauchsverguetungUnterAnteil DOUBLE," +
"b_eigenverbrauchsverguetungUeberAnteil DOUBLE)";
stmt = DatenbankVerbindung.CON.prepareStatement(update);
stmt.executeUpdate();
erzeugt = true;
System.out.println("Berechnungsbasis erfolgreich angelegt!");
}
catch (SQLException e)
{
// TODO Logeintrag
// TODO Fehleranzeige
e.printStackTrace();
System.out.println("Fehler beim Erzeugen der Berechnungsbasis");
}
finally
{
return erzeugt;
}
}
/**
* Füllen der Berechnungsbasis-Tabelle
* @return --> "true" für erfolgreiches Fuellen / "false" für Fehler beim Fuellen
*/
@SuppressWarnings("finally")
private boolean berechnungsbasisFuellen() {
boolean gefuellt = false;
PreparedStatement stmt;
try {
String update = "INSERT INTO berechnungsbasis(" +
"b_inbetriebnahme," +
"b_anschaffungskosten," +
"b_stromkostenEVU," +
"b_einspeiseverguetung," +
"b_eigenverbrauchsverguetung" +
"b_eigenverbrauchsverguetungSpezial," +
"b_eigenverbrauchsanteil," +
"b_eigenverbrauchsverguetungUnterAnteil," +
"b_eigenverbrauchsverguetungUeberAnteil) " +
"VALUES ('"+inbetriebnahme+ "'," +
"'"+anschaffungskosten+ "'," +
"'"+stromkostenEVU+ "'," +
"'"+einspeiseverguetung+ "'," +
"'"+eigenverbrauchsverguetung+ "'," +
"'"+eigenverbrauchsverguetungSpezial+ "'," +
"'"+eigenverbrauchsanteil+ "'," +
"'"+eigenverbrauchsverguetungUnterAnteil+ "'," +
"'"+eigenverbrauchsverguetungUeberAnteil+ "')";
stmt = DatenbankVerbindung.CON.prepareStatement(update);
stmt.getMetaData();
//stmt.executeUpdate();
gefuellt = true;
} catch (SQLException e) {
// TODO Logeintrag
// TODO Fehleranzeige
gefuellt = false;
e.printStackTrace();
} finally {
return gefuellt;
}
}
}
Die Parameter für den Konstruktor kommen aus einer Eingabemaske und sind auf keine Fall null...
Wär echt super, wenn mir jemand weiterhelfen könnte...bin gerade leicht am verzweifeln...:autsch: