Generelles zu individuellen Datenbanken


Individuelle Datenbanken dienen in todo4teams der Speicherung lösungsbezogener strukturierter Daten, wie z.B. der Sammlung von Spam-Absenderadressen, Kundendaten etc.

Der Zugriff auf diese Daten is extrem schnell und Sie können die Struktur der Tabellen selbst bestimmen. Die verwendete Datenbank Apache Derby unterstützt Indizes, referentielle Integrität und alle weiteren Features, die Sie von einer SQL-Datenbank erwarten.  

Um eine individuelle Datenbank in todo4teams-Skripten nutzen zu können, befolgen Sie bitte die folgenden Schritte:

  1. Starten Sie todo4teams mit der Rolle "Administrator" oder "Super-Administrator"
  2. Öffnen Sie den Bereich "Servereinstellungen"
  3. Klicken Sie auf "Anlegen", um eine neue Servereinstellung zu speichern
  4. Geben Sie als Schlüssel den Namen der neuen Datenbank ein - hier z.B. MyCustomDB:
    image-20230619112040-1.png
  5. Im Bereich 'Wert' müssen Sie den Namen der Datenbank und das Verzeichnis, in dem die Datenbank gespeichert werden soll, angeben (siehe Beispiel):
    Beachten Sie Bitte, dass das Datenbank-Verzeichnis - hier: /home/databases - existieren und für den ausführenden Benutzer des Tomcat-Appliktionsservers beschreibbar ein muss!
    image-20230619112251-2.png
  6. Verwenden Sie anschließend in den (server-seitigen) Skripten in todo4teams die neue Datenbank wie folgt:
    Der hier zu verwendende Name der Datenbank ist der, den Sie oben als "Schlüssel" eingegeben haben.
  7. Benutzen Sie die Datenbank wie jede andere JDBC-Datenbank in Java. Hier handelt es sich um eine Derby-Datenbank. Weitere Derby-spezifische Informationen finden Sie hier:
    https://db.apache.org/derby/docs/10.0/manuals/reference/sqlj02.html
var con  = helper.getCustomDB("MyCustomDB");
ar stmt = con.prepareStatement("INSERT INTO MyTable (myId, taskId, creationDate) VALUES (?,?, CURRENT_TIMESTAMP)");
stmt.setString(1, sfFormId);
stmt.setString(2, taskId);

try{
 stmt.executeUpdate();
if (!con.getAutoCommit()){
   c.commit();
 }

return true;
}
catch(de){
 // collision!
 println(de.getMessage());
 return false;
}
finally{
 stmt.close();
}

Einige konkrete Anwendungsbeispiele

In der Supervisor-Konsole von todo4teams können Sie im Tab "Custom-DB" die oben angelegte Datenbank ansprechen, einen SQL-Befehl eingeben und direkt ausführen (Button "Ausführen" unten rechts in der Supervisor-Konsole).

Bildschirmfoto vom 2023-06-22 10-57-43.png

Folgender SQL-Befehl erzeugt in der Datenbank eine neue Tabelle "Student" mit den darunter definierten Feldern "Id", "Age", "First_Name" und "last_name".

Da im vorliegenden Fall solch eine Tabelle bereits existiert, wird als Ergebnis des SQL-Befehls eine Fehlermeldung ausgegeben.

CREATE TABLE Student (
   Id INT NOT NULL GENERATED ALWAYS AS IDENTITY,
   Age INT NOT NULL,
   First_Name VARCHAR(255),
   last_name VARCHAR(255),
  PRIMARY KEY (Id)
);

Bildschirmfoto vom 2023-06-22 10-58-33.png

Der SQL-Befehl "Show Tables" zeigt alle Tabellen innerhalb der Custom-DB an:

SHOW TABLES;

Bildschirmfoto vom 2023-06-22 10-59-54.png

Sie können auch direkt Inhalte einfügen; im vorliegenden Fall muss definiert sein: die betroffene Tabelle, die Feldnamen und die Werte ("Values"), die eingepflegt werden sollen.

INSERT INTO Student(Age, First_Name, Last_Name) VALUES (21, 'Max' , 'Muster');

Bildschirmfoto vom 2023-06-22 11-00-31.png

Ein weiteres Beispiel für das Hinzufügen von Inhalten.

INSERT INTO Student(Age, First_Name, Last_Name) VALUES (24, 'Britta' , 'Beispiel');

Bildschirmfoto vom 2023-06-22 11-01-06.png

Ein einfacher Select-Befehl gibt nun sämtliche Inhalte der Tabelle "Student" zurück.

SELECT  * FROM Student;

Bildschirmfoto vom 2023-06-22 11-01-44.png

Auch Löschungsoperationen sind selbstverständlich möglich, mit u.a. Codeschnipsel werden sämtlich Dateninhalte entfernt. Zurückgegeben wird als Ergebnis die Anzahl der Zeilen, die gelöscht worden sind.

DELETE FROM Student;

Bildschirmfoto vom 2023-06-22 11-02-26.png

Selbst die oben angelegte Tabelle "Student" lässt sich mit einfachen Mitteln löschen; im vorliegenden Fall war diese Tabelle vorab gelöscht worden, das Ergebnis des SQL_Befehls ist daher eine Fehlermeldung, dass die Tabelle nicht existiert.

DROP TABLE Student;

Bildschirmfoto vom 2023-06-22 11-03-13.png

 

     

Unterseiten