Hi
Habe schon vor einiger Zeit mal bei Chip gefragt aber mir konnte nicht geholfen werden, vielleicht ja hier.
Und zwar habe ich eine Objektorientierte Datenbank db4o für ein Hardwareverwaltungssystem verwendet. Wenn ich aber Attribute von Produkten auslesen will, wird immer null zurückgegeben. Ich habe mir 2 verschiedene Tutorials angeguckt, wobei eins älter war und das andere auf Englisch. Ich finde dennoch keinen Fehler.
Hoffe auf Hilfe.
Fenster
Produkt
Speichern
Auslesen
Danke, vielleicht kann mir ja jemand helfen
Grüße
Habe schon vor einiger Zeit mal bei Chip gefragt aber mir konnte nicht geholfen werden, vielleicht ja hier.
Und zwar habe ich eine Objektorientierte Datenbank db4o für ein Hardwareverwaltungssystem verwendet. Wenn ich aber Attribute von Produkten auslesen will, wird immer null zurückgegeben. Ich habe mir 2 verschiedene Tutorials angeguckt, wobei eins älter war und das andere auf Englisch. Ich finde dennoch keinen Fehler.
Hoffe auf Hilfe.
Fenster
Java:
/**
*
* @author Julian Vehring
* @version 1
*/
import com.db4o.Db4oEmbedded;
import com.db4o.ObjectContainer;
import com.db4o.ObjectSet;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTabbedPane;
import javax.swing.JTextField;
public class Fenster {
JFrame frame1;
JButton bnewproduct;
JButton bdproduct;
JButton bexport;
JButton bsearch;
JLabel ltyp; //Dialog "Produkt hinzufügen"
JTextField tftyp;
JLabel lhersteller;
JTextField tfhersteller;
JLabel lmodell;
JTextField tfmodell;
JLabel lbaujahr;
JTextField tfbaujahr;
JLabel lseriennummer;
JTextField tfseriennummer;
JLabel llieferant;
JTextField tflieferant;
JLabel lpreis;
JTextField tfpreis;
JButton bprodukth;
public Fenster() {
this.frame1 = new JFrame("Hardware Verwaltungs System");
frame1.setSize(800, 600);
frame1.setResizable(false);
frame1.setLocationRelativeTo(null);
frame1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.bnewproduct = new JButton("Produkt hinzufügen");
bnewproduct.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent action) {
dialogProdukthinzufuegen();
}
});
this.bdproduct = new JButton("Produkt löschen");
this.bsearch = new JButton("Produkt suchen");
this.bexport = new JButton("Liste exportieren");
bexport.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent action) {
auslesen();
}
});
setButtonSize(bnewproduct);
setButtonSize(bdproduct);
setButtonSize(bsearch);
setButtonSize(bexport);
JPanel cbutton1 = new JPanel(new FlowLayout()); //FlowLayout für Button "Produkt hinzufügen"
cbutton1.add(bnewproduct);
JPanel cbutton2 = new JPanel(new FlowLayout()); //FlowLayout für Button "Produkt löschen"
cbutton2.add(bdproduct);
JPanel cbutton3 = new JPanel(new FlowLayout()); //FlowLayout für Button "Produkt suchen"
cbutton3.add(bsearch);
JPanel cbutton4 = new JPanel(new FlowLayout()); //FlowLayout für Button "Liste exportieren"
cbutton4.add(bexport);
Box boxleft = new Box(BoxLayout.Y_AXIS); //Box für Komponenten links
boxleft.add(cbutton1);
boxleft.add(cbutton2);
boxleft.add(cbutton3);
boxleft.add(cbutton4);
Box boxright = new Box(BoxLayout.Y_AXIS); //Box für Komponenten rechst
JPanel containerl = new JPanel(new FlowLayout()); //FlowLayout für Komponenten links
containerl.setPreferredSize(new Dimension(180, 580));
containerl.add(boxleft);
JPanel containerr = new JPanel(new FlowLayout()); //FlowLayout für Komponenten rechts
containerr.setPreferredSize(new Dimension(620, 580));
containerr.add(boxright);
Box container1 = new Box(BoxLayout.X_AXIS); //Haupcontainer
container1.add(containerl);
container1.add(containerr);
JTabbedPane tabbedPane = new JTabbedPane();
tabbedPane.addTab("Übersicht", container1);
frame1.add(tabbedPane);
frame1.setVisible(true);
}
private void setButtonSize(JButton a) {
a.setPreferredSize(new Dimension(150, 25)); //Einheitsgröße für alle Buttons
}
private void setTfSize(JTextField a) {
a.setPreferredSize(new Dimension(150, 25)); //Einheitsgröße für alle Buttons
}
private void setLabelSize(JLabel a) {
a.setPreferredSize(new Dimension(150, 25)); //Einheitsgröße für alle Labels
}
private void dialogProdukthinzufuegen() {
JDialog dialog1 = new JDialog(); // Dialog wird geöffnet, um ein Produkt hinzuzufügen.
dialog1.setSize(400, 300);
dialog1.setResizable(false);
dialog1.setLocationRelativeTo(null);
this.ltyp = new JLabel("Typ"); // Eigentschaft mit Textfeld
setLabelSize(ltyp);
this.tftyp = new JTextField();
setTfSize(tftyp);
JPanel container1 = new JPanel(new FlowLayout());
container1.add(ltyp);
container1.add(tftyp);
final String styp = tftyp.getText();
this.lhersteller = new JLabel("Hersteller"); // Eigentschaft mit Textfeld
setLabelSize(lhersteller);
this.tfhersteller = new JTextField();
setTfSize(tfhersteller);
JPanel container2 = new JPanel(new FlowLayout());
container2.add(lhersteller);
container2.add(tfhersteller);
final String shersteller = tfhersteller.getText();
this.lmodell = new JLabel("Modell"); // Eigentschaft mit Textfeld
setLabelSize(lmodell);
this.tfmodell = new JTextField();
setTfSize(tfmodell);
JPanel container3 = new JPanel(new FlowLayout());
container3.add(lmodell);
container3.add(tfmodell);
final String smodell = tfmodell.getText();
this.lbaujahr = new JLabel("Baujahr"); // Eigentschaft mit Textfeld
setLabelSize(lbaujahr);
this.tfbaujahr = new JTextField();
setTfSize(tfbaujahr);
JPanel container4 = new JPanel(new FlowLayout());
container4.add(lbaujahr);
container4.add(tfbaujahr);
final String sbaujahr = tfbaujahr.getText();
this.lseriennummer = new JLabel("Seriennummer"); // Eigentschaft mit Textfeld
setLabelSize(lseriennummer);
this.tfseriennummer = new JTextField();
setTfSize(tfseriennummer);
JPanel container5 = new JPanel(new FlowLayout());
container5.add(lseriennummer);
container5.add(tfseriennummer);
final String sseriennummer = tfseriennummer.getText();
this.llieferant = new JLabel("Lieferant"); // Eigentschaft mit Textfeld
setLabelSize(llieferant);
this.tflieferant = new JTextField();
setTfSize(tflieferant);
JPanel container6 = new JPanel(new FlowLayout());
container6.add(llieferant);
container6.add(tflieferant);
final String slieferant = tflieferant.getText();
this.lpreis = new JLabel("Preis"); // Eigentschaft mit Textfeld
setLabelSize(lpreis);
this.tfpreis = new JTextField();
setTfSize(tfpreis);
JPanel container7 = new JPanel(new FlowLayout());
container7.add(lpreis);
container7.add(tfpreis);
final String spreis = tfpreis.getText();
this.bprodukth = new JButton("Hinzufügen"); // Button zum endgültigen Hinzufügen
bprodukth.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent action) {
Produkt produkt = new Produkt(styp, shersteller, smodell, sbaujahr, sseriennummer, slieferant, spreis);
Speichern speichern = new Speichern();
speichern.speichern(produkt);
}
});
Box box1 = new Box(BoxLayout.Y_AXIS);
box1.add(container1);
box1.add(container2);
box1.add(container3);
box1.add(container4);
box1.add(container5);
box1.add(container6);
box1.add(container7);
box1.add(bprodukth);
dialog1.add(box1);
dialog1.setVisible(true);
}
private void auslesen() {
Auslesen auslesen = new Auslesen();
ArrayList<Produkt> produkte = auslesen.auslesen();
System.out.println(produkte);
produkte.isEmpty();
for(Produkt p: produkte) {
System.out.println("Typ: " + p.getTyp());
}
}
public static void main(String[] args) {
new Fenster();
}
}
Produkt
Java:
public class Produkt {
private String typ;
private String hersteller;
private String modell;
private String baujahr;
private String seriennummer;
private String lieferant;
private String preis;
public Produkt(String typ, String hersteller, String Modell, String Baujahr, String Seriennummer, String Lieferant, String Preis)
{
this.typ = typ;
this.hersteller = hersteller;
this.modell = modell;
this.baujahr = baujahr;
this.seriennummer = seriennummer;
this.lieferant = lieferant;
this.preis = preis;
}
public String getTyp() {
return typ;
}
}
Speichern
Java:
import com.db4o.Db4oEmbedded;
import com.db4o.ObjectContainer;
import com.db4o.ext.DatabaseFileLockedException;
public class Speichern {
public void speichern(Produkt produkt) {
ObjectContainer db = Db4oEmbedded.openFile(Db4oEmbedded.newConfiguration(), "C:/Datenbank/HVS/HVSDatenbank.yap");
try {
db.store(produkt);
} catch (DatabaseFileLockedException e) {
e.printStackTrace();
} finally {
db.close();
}
}
}
Auslesen
Java:
import com.db4o.Db4oEmbedded;
import com.db4o.ObjectContainer;
import com.db4o.ObjectSet;
import com.db4o.ext.DatabaseFileLockedException;
import java.util.ArrayList;
public class Auslesen {
public ArrayList<Produkt> auslesen() {
ObjectContainer db = Db4oEmbedded.openFile("C:/Datenbank/HVS/HVSDatenbank.yap");
ArrayList<Produkt> arrl = new ArrayList<Produkt>();
try{
Produkt p = new Produkt(null, null, null, null, null, null, null);
ObjectSet<Produkt> result = db.queryByExample(p);
while(result.hasNext()) {
p = result.next();
arrl.add(p);
}
} catch (DatabaseFileLockedException e) {
e.printStackTrace();
} finally {
db.close();
}
return arrl;
}
}
Danke, vielleicht kann mir ja jemand helfen
Grüße