Habs auch eher als konstruktive Kritik gesehn als es böse genommen zu haben

außerdem lernt man aus Fehlern!
Ich poste mal mein bisheriges Ergebnis (i. d. Hoffnung nen weiteren Fehler beheben zu können)
Methode für DB-Zugriff und Speicherung der Datensätze:
HTML:
public ArrayList DBlesen() throws SQLException{
try
{
String befehl = "SELECT * FROM KUNDE";
statement = connection.createStatement();
result = statement.executeQuery(befehl);
ArrayList<Object> datensaetze = new ArrayList<Object>();
if(result != null){
int count = 0;
while(result.next()){
count++;
DBDatensatz einDatensatz = new DBDatensatz();
einDatensatz.setkdNr(result.getInt(1));
einDatensatz.setName(result.getString(2));
einDatensatz.setStrasse(result.getString(3));
einDatensatz.setHausNr(result.getString(4));
einDatensatz.setPlz(result.getString(5));
einDatensatz.setOrt(result.getString(6));
einDatensatz.setLand(result.getString(7));
einDatensatz.setTel(result.getString(8));
einDatensatz.setFax(result.getString(9));
datensaetze.add(einDatensatz);
}
}
return datensaetze;
}
catch (SQLException ex1)
{
System.out.println("Es ist ein Fehler aufgetreten: " + ex1.getMessage());
}
return null;
}
Methode zum Anzeigen der Daten in den Textfeldern:
HTML:
public void datenAnzeigen() throws SQLException{
// ArrayList der Datensaetze aus ResultSet
ArrayList datensaetze = einZugriff.DBlesen();
Object einDatensatz = datensaetze.get(0);
String kdnr = String.valueOf(((DBDatensatz) einDatensatz).getkdNr());
tfKdNr.setText(kdnr);
String name = String.valueOf(((DBDatensatz) einDatensatz).getName());
tfName.setText(name);
String strasse = String.valueOf(((DBDatensatz) einDatensatz).getStrasse());
tfStrasse.setText(strasse);
String hausNr = String.valueOf(((DBDatensatz) einDatensatz).getHausNr());
tfHausNr.setText(hausNr);
String plz = String.valueOf(((DBDatensatz) einDatensatz).getPlz());
tfPlz.setText(plz);
String ort = String.valueOf(((DBDatensatz) einDatensatz).getOrt());
tfOrt.setText(ort);
String land = String.valueOf(((DBDatensatz) einDatensatz).getLand());
tfLand.setText(land);
String telefon = String.valueOf(((DBDatensatz) einDatensatz).getTel());
tfTelefon.setText(telefon);
String fax = String.valueOf(((DBDatensatz) einDatensatz).getFax());
tfFax.setText(fax);
}
Methoden für die Cursor (funktionieren nocht nicht 100%...):
HTML:
public void letzterDatensatz(){
ArrayList datensaetze = null;
try {
datensaetze = einZugriff.DBlesen();
} catch (SQLException e) {
e.printStackTrace();
}
if(datensatzCounter == 0){
JOptionPane.showMessageDialog(this, "Zurück nicht möglich. Erster Datensatz bereits erreicht!");
}
else{
datensatzCounter--;
Object einDatensatz = datensaetze.get(datensatzCounter);
String kdnr = String.valueOf(((DBDatensatz) einDatensatz).getkdNr());
tfKdNr.setText(kdnr);
String name = String.valueOf(((DBDatensatz) einDatensatz).getName());
tfName.setText(name);
String strasse = String.valueOf(((DBDatensatz) einDatensatz).getStrasse());
tfStrasse.setText(strasse);
String hausNr = String.valueOf(((DBDatensatz) einDatensatz).getHausNr());
tfHausNr.setText(hausNr);
String plz = String.valueOf(((DBDatensatz) einDatensatz).getPlz());
tfPlz.setText(plz);
String ort = String.valueOf(((DBDatensatz) einDatensatz).getOrt());
tfOrt.setText(ort);
String land = String.valueOf(((DBDatensatz) einDatensatz).getLand());
tfLand.setText(land);
String telefon = String.valueOf(((DBDatensatz) einDatensatz).getTel());
tfTelefon.setText(telefon);
String fax = String.valueOf(((DBDatensatz) einDatensatz).getFax());
tfFax.setText(fax);
}
}
public void naechsterDatensatz(){
ArrayList datensaetze = null;
try {
datensaetze = einZugriff.DBlesen();
} catch (SQLException e) {
e.printStackTrace();
}
System.out.println("Array:" + datensaetze.size());
System.out.println("Counter:" + datensatzCounter);
if(datensatzCounter >= datensaetze.size()){
JOptionPane.showMessageDialog(this, "Weiter nicht möglich. Letzter Datensatz bereits erreicht!");
}
else{
datensatzCounter++;
Object einDatensatz = datensaetze.get(datensatzCounter);
String kdnr = String.valueOf(((DBDatensatz) einDatensatz).getkdNr());
tfKdNr.setText(kdnr);
String name = String.valueOf(((DBDatensatz) einDatensatz).getName());
tfName.setText(name);
String strasse = String.valueOf(((DBDatensatz) einDatensatz).getStrasse());
tfStrasse.setText(strasse);
String hausNr = String.valueOf(((DBDatensatz) einDatensatz).getHausNr());
tfHausNr.setText(hausNr);
String plz = String.valueOf(((DBDatensatz) einDatensatz).getPlz());
tfPlz.setText(plz);
String ort = String.valueOf(((DBDatensatz) einDatensatz).getOrt());
tfOrt.setText(ort);
String land = String.valueOf(((DBDatensatz) einDatensatz).getLand());
tfLand.setText(land);
String telefon = String.valueOf(((DBDatensatz) einDatensatz).getTel());
tfTelefon.setText(telefon);
String fax = String.valueOf(((DBDatensatz) einDatensatz).getFax());
tfFax.setText(fax);
}
}
Ok...schließlich zu meinen Problemen:
- die Cursor-Buttons zum Vor- und Zürckschalten der Datensätze funktionieren leider noch nicht richtig... steig da grad nicht dahinter!
- hab das ganze jetzt unter Wettkampfbedingungen getestet (der schließlich zur Einsatz kommen DB):
Hier tritt das Problem auf, dass ich eine rießige Meldung erhalte, dass ich zu viele Client-Tasks beim Zugriff auf die Datenbank per JDBC-ODBC habe.
Vielleicht findet jm. von euch den Fehler im Code...
Vielen Dank im Vorraus...
und ein großes DANKE an zerix für deine tolle Idee
Liebe Grüße