ich hab mal wieder in problem mit meinem haushaltsbuch...
meine zugriffe auf die datenbank mache ich mit einer eigenen klasse der "DBkasse"
hier mal der code davon:
so, das oben gezeigte funktioniert auch schon so, wie es soll und ich kann von den servlets auch darauf zugreifen.
die nächste aktion wäre dann das ausrechnen von den einzelnen eingetragenen ausgaben innerhalb eines bestimmten zeitraums.
der mysql-befehl wäre hier:
und um die entsprechenden einträge anzuzeigen wäre es:
wobei das datum, bzw die beiden datumswerte variabel sein sollen und über ein form-tag übergeben wird.
sobald ich ein prepared statement in der gleichen weise schreibe und auch eine entsprechende funktion
(ähnlich einfuegen() oder loeschen() ) wie beim input oder delete, crashed das ganze und nix geht mehr.
wie kann ich das ganze realisieren??
meine zugriffe auf die datenbank mache ich mit einer eigenen klasse der "DBkasse"
hier mal der code davon:
Code:
package util;
import java.sql.*;
import java.util.*;
public class DBkasse {
private static DBkasse tool;
private String driver ="org.gjt.mm.mysql.Driver";
private String verbindung ="jdbc:mysql://localhost:3306/haushaltsbuch";
private String user="root";
private String password="password";
private String lol="";
private Connection con;
private Vector vHeader = new Vector();
private PreparedStatement psInsert ;
private PreparedStatement psDelete ;
private PreparedStatement psAdd ;
private DBkasse() {
this("org.gjt.mm.mysql.Driver", "jdbc:mysql://localhost:3306/haushaltsbuch", "root","password");
}
private DBkasse(String driver, String verbindung, String user, String password) {
this.driver = driver;
this.verbindung=verbindung;
this.user=user;
this.password=password;
try {
Class.forName(driver);
con = DriverManager.getConnection(verbindung,user,password);
psInsert = con.prepareStatement("INSERT INTO kassenbuch(datum,art_der_ausgaben,wert) values(?,?,?)");
} catch (Exception e) {
System.out.println("Problem in DBTool Konstuktor" + e);
System.exit(0);
}
try {
Class.forName(driver);
con = DriverManager.getConnection(verbindung,user,password);
psDelete = con.prepareStatement("DELETE FROM kassenbuch WHERE datum=?");
} catch (Exception e) {
System.out.println("Problem in DBTool Konstuktor " + e);
System.exit(0);
}
try {
Class.forName(driver);
con = DriverManager.getConnection(verbindung,user,password);
psAdd = con.prepareStatement("select sum(wert) from kassenbuch");
psAdd.execute();
} catch (Exception e) {
System.out.println("Problem in DBTool Konstuktor" + e);
System.exit(0);
}
}
public static DBkasse getInstance() {
// wenn das Objekt noch nicht erzeugt wurde
if (tool == null) {
tool = new DBkasse();
}
return tool ;
}
// gibt einen doppelten Vector zurueck, der den Inhalt der Tabelle haushaltsbuch.kassenbuch enthaelt
public Vector getHeader() {
if (vHeader.size() == 0){
getAllRecords();
}
return vHeader;
}
public Vector getAllRecords() {
Vector megaVector = new Vector();
try {
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM kassenbuch");
ResultSetMetaData rsmd = rs.getMetaData();
int count = rsmd.getColumnCount();
vHeader.clear();
for (int i = 1; i<= count;i++) {
vHeader.add(rsmd.getColumnLabel(i));
}
// Schleife die Satz für Satz durch RS läuft
while (rs.next()) {
Vector satzVector =new Vector();
// Spaltenschleife
for (int i = 1; i<= count;i++) {
satzVector.add(rs.getString(i));
}
megaVector.add(satzVector);
}
} catch (SQLException se ) {
System.out.println("Problem in getAllRecords() " +se);
}
return megaVector;
}
public Vector getSumme() {
Vector sumVector = new Vector();
try {
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("select sum(wert) from kassenbuch");
ResultSetMetaData rsmd = rs.getMetaData();
int count = rsmd.getColumnCount();
for (int i = 1; i<= count;i++) {
vHeader.add(rsmd.getColumnLabel(i));
}
// Schleife die Satz für Satz durch RS läuft
while (rs.next()) {
Vector sumsatzVector =new Vector();
// Spaltenschleife
for (int i = 1; i<= count;i++) {
sumsatzVector.add(rs.getString(i));
}
sumVector.add(sumsatzVector);
}
} catch (SQLException se ) {
System.out.println("Problem in getsumme() " +se);
}
return sumVector;
}
public void einfuegen(String dt, String ada, String num) throws SQLException {
try {
// fuellt die Spalten des PreparedStatments
psInsert.setString(1, dt);
psInsert.setString(2, ada);
psInsert.setString(3, num);
psInsert.executeUpdate();
} catch (SQLException se ) {
System.out.println("vonne DB_Class Probleme in einfuegen... ");
throw se;
}
}
public void loeschen(String datum)throws SQLException {
try {
// fuellt die Spalten des PreparedStatments
psDelete.setString(1, datum);
psDelete.execute();
} catch (SQLException se ) {
System.out.println("vonne DB_Class Probleme in löschen... ");
throw se;
}
}
}
so, das oben gezeigte funktioniert auch schon so, wie es soll und ich kann von den servlets auch darauf zugreifen.
die nächste aktion wäre dann das ausrechnen von den einzelnen eingetragenen ausgaben innerhalb eines bestimmten zeitraums.
der mysql-befehl wäre hier:
Code:
select sum(wert)
where datum between '2007-05-01' and '2007-05-15'
und um die entsprechenden einträge anzuzeigen wäre es:
Code:
select * from kassenbuch
where datum between '2007-05-01' and '2007-05-15'
wobei das datum, bzw die beiden datumswerte variabel sein sollen und über ein form-tag übergeben wird.
sobald ich ein prepared statement in der gleichen weise schreibe und auch eine entsprechende funktion
(ähnlich einfuegen() oder loeschen() ) wie beim input oder delete, crashed das ganze und nix geht mehr.
wie kann ich das ganze realisieren??