Moin, moin!
Ich beschäftige mich seit kurzem mehr oder weniger zwangsweise mit JSP, da es für meinen jetztigen Ferialjob erforderlich ist.
Ich beherrsche allerdings bisher nur PHP als serverseitige Scriptsprache.
Ich soll ein Bestellformular für Werbeartikel programmieren von dem aus die Daten in eine Datenbank eingetragen werden sollen. (Wenn möglich auch noch per E-Mail an mind. 2 verschiedene Absender versendet werden)
Ich hab jetzt schon gegoogelt aber nichts gefunden was mich weiterbringen würde.
Deshalb müsste ich wissen wie ich mit JSP auf eine OpenDocument-Datenbank (OpenOffice.org - Base) zugreifen kann. Access habe ich leider nicht verfügbar!
da die frage auch wo anders gestellt wurde kopier ich mal die dortige antwort
das .odb-Format ist eine zip(jar)-Datei, d.h. die enthaltene Datenbank liegt darin in komprimierter Form. Du könntest versuchen die .odb zu entpacken und mit dem HSQLDB-Treiber darauf zuzugreifen. Die HSQLDB ist, glaub ich, die intern verwendete standardm. Datenbank.
Allerdings kann die .odb auch nur Informationen über eine benutzte externe Datenbank enthalten - also müssen in der .odb gar keine Daten drin sein.
Wie ich dir schonmal geschrieben hatte geht das auf jeden Fall mit HSQLDB du kannst aber auch zb MySQL oder andere Datenbanken benutzen.
Wenn du MySQL benutzen willst musst du dir den MySQL Connector von MySQL laden und meines Wissens kann man bei einem Tomcat (worin die JSP Seiten zb laufen) einen Connection Pool einrichten worüber man dann halt die Verbindung zur DB bekommen kann
Ansonsten kannst du vielleicht auch direkt selbst eine aufbauen was aber auch ne kleiner Geschwindigkeitsverlust ist.
Wenn du HSQLDB benutzen willst müsstest du das als Server einrichten was aber wenn ich mich an die Doku erinnere nicht sehr schwer sein sollte, außerdem erfüllt es im großen auch die SQL Standards
Moin.
Bin da grade auf ein Problem gestoßen.
Ich habe verschiedene Objekte die auf eine Datenbankmiddleware zugreifen. Da nun jedesmal die Verbindung zur Datenbank neu herzustellen ist ein bisschen umständlich und zudem auch noch äußerst langsam.
Eleganter wäre es, dass ganze nur einmal zu tun beim Programmstart.
Habe es jetzt erstmal so gelöst, das ich zu Beginn ein Datenbankobjekt anlege und die dbconnect Methode und deren Variablen static gemacht habe. Funktioniert soweit, aber jemand bestimmtes hat mir gesagt, das sei nicht so super elegant, darum wollte ich mal nach einer besseren Methode fragen.
class a{
private SQLClass sql = new SQLClass();
public a()
{
a.connect();
new GUI(a);
...
}
}
class b{
private SQLClass sql;
public b(SQLClass sql){
this.sql=sql;
...
}
private void mach was(){
sql.hierMachWas();
}
}
so wäre die eine Lösung, das geht ist nur nicht so schön
Singleton
class SQLClass{
private Connection con;
private static SQLClass instance;
private SQLClass(){}
public static SQLClass getInstance(){
if(instance==null)
instance = new SQLClass();
return instance;
}
public void connect(){
con = new connection //das stimmt so nicht aber du weißt ja was du machen musst
}
}
und jetzt machst du nur in deiner Hauptklasse damit die Verbindung steht
class Main{
private SQLClass sql;
public Main(){
sql = SQLClass.getInstance();
sql.connect();
}
}
und wenn du es jetzt mal brauchs einfach
class a(){
private SQLClass sql = SQLClass.getInstance();
public a(){
}
private void machWas(){
sql.buh();
}
durch die getInstance Methode bekommst du ja immer das gleiche Objekt und so hast auch immer die gleiche Methode
ich wuerde noch einen schritt weiter gehen und in der Datenbankmanagerklasse die komplette Logik reinstecken, d.h. die Klassen manipulieren an der datenbankverbindung gar nichts sondern schicken einfach ihre Anfragen and die DBManagerklasse
public class Whatever {
public void doWhatever() {
DBManagager manager = DBManager.getInstance();
manager.updateDB("UPDATE what.....");
}
}
somit wuerde man es im idealfall schaffen das komplette handlung der DB nur in der ManagerKlasse ablaufen zu lassen
ja das macht er ja schon soweit ich weiß und meine SQL Klasse hat ja nur das connect() als Beispiel da können ja noch mehr drin stehn (meine hat derzeit >500 Zeilen ;))