Hallo,
ich möchte den vom Anwendet bearbeiteten jTree beim Schließen der Form speichern, in einer MySQL-Datenbank als BLOB abspeichern und beim neuerlichen Öffnen wieder einlesen.
Mein Fehler dürfte wohl hier liegen, beim Einlesen:
tree = (JTree) in.readObject();
...
treemodel = (DefaultTreeModel) in.readObject();
treemodel.reload();
tree.setModel(treemodel);
Was mache ich falsch?
ich möchte den vom Anwendet bearbeiteten jTree beim Schließen der Form speichern, in einer MySQL-Datenbank als BLOB abspeichern und beim neuerlichen Öffnen wieder einlesen.
Mein Fehler dürfte wohl hier liegen, beim Einlesen:
tree = (JTree) in.readObject();
...
treemodel = (DefaultTreeModel) in.readObject();
treemodel.reload();
tree.setModel(treemodel);
Was mache ich falsch?
Java:
private void formWindowClosing(java.awt.event.WindowEvent evt) {
System.out.println ("Closing");
DefaultTreeModel treemodel = (DefaultTreeModel) tree.getModel();
try {
FileOutputStream file = new FileOutputStream("tree.txt");
ObjectOutputStream out = new ObjectOutputStream(file);
out.writeObject(tree);
file = new FileOutputStream("model.txt");
out = new ObjectOutputStream(file);
out.writeObject(treemodel);
MySQLConn conn = new MySQLConn();
String asql = "update blobs set ablob=? where akey=1";
File fil = new File("tree.txt");
FileInputStream fis = new FileInputStream(fil);
PreparedStatement pstmt = conn.getconn().prepareStatement(asql);
pstmt.setBinaryStream(1, fis, (int) fil.length());
pstmt.executeUpdate();
asql = "update blobs set ablob=? where akey=2";
fil = new File("model.txt");
fis = new FileInputStream(fil);
pstmt = conn.getconn().prepareStatement(asql);
pstmt.setBinaryStream(1, fis, (int) fil.length());
pstmt.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
}
}
void loadtree() {
MySQLConn conn = new MySQLConn();
DefaultTreeModel treemodel = (DefaultTreeModel) tree.getModel();
try {
String asql = "SELECT LENGTH(ablob) FROM blobs where akey=1";
int i = Integer.parseInt(conn.singleresult(asql));
if (i > 40) {
asql = "select ablob from blobs where akey=1";
ResultSet rs = conn.getstat().executeQuery(asql);
rs.next();
File fil = new File("tree.txt");
FileOutputStream output = new FileOutputStream(fil);
InputStream input = rs.getBinaryStream("ablob");
byte[] buffer = new byte[1024];
while (input.read(buffer) > 0) {
output.write(buffer);
}
FileInputStream file= new FileInputStream("tree.txt");
ObjectInputStream in = new ObjectInputStream(file);
tree = (JTree) in.readObject();
asql = "select ablob from blobs where akey=2";
rs = conn.getstat().executeQuery(asql);
rs.next();
fil = new File("model.txt");
output = new FileOutputStream(fil);
input = rs.getBinaryStream("ablob");
while (input.read(buffer) > 0) {
output.write(buffer);
}
file = new FileInputStream("model.txt");
in = new ObjectInputStream(file);
treemodel = (DefaultTreeModel) in.readObject();
treemodel.reload();
tree.setModel(treemodel);
}
} catch (Exception e2) {
e2.printStackTrace();
}
}