//OpenCms Database Access Module


Das Modul erlaubt den Zugriff auf MySQL, PostgreSQL oder Oracle Datenbank Tabellen über den OpenCms Administrationsbereich. Es lassen sich eigene Eingabemasken definieren, Datensätze listen, suchen, anlegen, bearbeiten, kopieren und löschen.

//Installation


Installieren lässt sich das Modul über den Administrationspunkt Modul Verwaltung. Dort über Modul per HTTP importieren die ZIP Datei importieren. Nach dem Import ist ein Neustart des Servletcontainers erforderlich.

Hier geht es zu einer ausführlicheren Anleitung um ein OpenCms Modul zu installieren.

//Beispieldaten


Nach dem Neustart des Servers sollten in der Datenbank drei neue Tabellen vorhanden sein: data_newsletter_channels, data_newsletter_recipients, data_newsletters. (Diese dienen nur zur Demonstration und können nach der Definition von eigenen Tabellen gelöscht werden.  Damit diese nicht bei jedem Neustart des Servers wieder angelegt werden, sollte auch die entsprechenden DDL/DML Befehle in der Datei /system/modules/info.marlan.dbaccess/sql/*.initialize.sql gelöscht werden.) Im Administrationsbereich von OpenCms sollte jetzt ein neuer Administrationspunkt "Daten" erscheinen. Über diesen gelangt man zu den drei Tabellen:   

Demo Newsletter Tabellen

Nach dem Klick auf eine der Tabellensymbole gelangt man zur Listenansicht der jeweiligen Tabelle.   


list 

Da diese nach der Installation erstmal keine Daten enthalten, ist diese erstmal leer. Über den Eintrag: neuen Datenbankeintrag erstellen,  (oder alternativ das Bleistift oder Kopier Symbol in der Listenansicht) erreicht man die Eingabemaske.  

edit 

Über die Maske lassen sich nun Daten eingeben und über den OK Button speichern. (Falls PostgreSQL oder Oracle als DBMS zum Einsatz kommt, muss zum Funktionieren der Beispiele die SQL Befehle in den Konfigurationsdateien /system/workplace/admin/dbaccess/data_newsletters.conf und /system/workplace/admin/dbaccess/data_newsletter_recipients.conf angepasst werden, dazu wieder auf "Bearbeiten" klicken und bei dem "Widget option string" in der der SQL Befehl steht, den entsprechenden SQL Befehl aus dem Kommentarfeld kopieren, speichern und den Workplace neuinitialisieren und anschließendem Logout/Login.

//Konfiguration eigener Tabellen


Um eigene Masken für den Tabellenzugriff zu konfigurieren, kopiert man sich am besten eine der /system/workplace/admin/dbaccess/data_*.jsp und die dazugehörige .conf Datei. In der JSP muss daraufhin der Pfad zur .conf Datei an den neuen Namen angepasst werden, zusätzlich müssen in der .conf die Tabellen und Datenbankeinstellungen entsprechend konfiguriert werden. Dazu klickt man auf das Symbol der JSP bzw. conf Datei und wählt den Menüpunkt "Bearbeiten".

define

Falls der Zugriff auf noch nicht bestehende Tabellen erfolgen soll, müssen diese manuell über ein geeignetes Programm (PgAdmin, SQLyog, phpMyAdmin o.ä.) erstellt werden. (Dabei sollte darauf geachtet werden, dass der Datentyp zur Eingabemaske passt - also möglichst kein numerischen Datentyp mit einem HTML Widget kombinieren;), zusätzlich muss das Datenbanksystem sich um die Erzeugung des Primärschlüssels kümmern (z.B. autoincrement bei MySQL), da diese bei einer insert Operation nicht gesetzt werden.) Zu jedem Feld lässt sich ein regulärer Ausdruck angeben, auf den die eingegebenen Daten matchen müssen, bevor man den Datensatz speichern kann.  Für die Eingabefelder kann man derzeit aus folgenden OpenCms Widgets auswählen: 
 

  • CmsCalendarWidget,
  • CmsCheckboxWidget,
  • CmsDisplayWidget,
  • CmsDownloadGalleryWidget,
  • CmsGroupWidget,
  • CmsHtmlGalleryWidget,
  • CmsInputWidget,
  • CmsLinkGalleryWidget,
  • CmsMultiSelectWidget,
  • CmsSelectWidget,
  • CmsPasswordWidget,
  • CmsComboWidget,
  • CmsHtmlWidget,
  • CmsTableGalleryWidget,
  • CmsTextareaWidget,
  • CmsUserWidget,
  • CmsVfsFileWidget 

Nach einer Neuinitialisierung des Workplaces und einem anschließendem Logout und Login sollte dann der Button zur Tabelle analog zu den Beispieleinträgen im Administrationsbereich erscheinen. Das war's. 

Hier noch ein einfaches Beispiel, wie man auf die Daten im Frontend (in einem OpenCms JSP Template) zugreifen kann.

Bitte beachten:
Das Modul ist bei der eigenen privaten Einarbeitung in das OpenCms Modulsystem (damals noch 6.2) vorletztes Jahr entstanden und entspricht daher nicht unbedingt den "Best Practice". Ich veröffentliche das Modul (als Sandbox Modul) in der Hoffnung, dass es ggf. für jemanden nützlich sein kann. Es sollte auf OpenCms Versionen 7+ und Java 1.4+ laufen, die MySQL (getestet mit MyISAM auf 4 und 5), PostgreSQL (gestestet mit 8.2) oder Oracle (getestet mit 10g XE)  als Datenbanksystem einsetzen.  Vermutlich werden nicht alle Datenbank Datentypen oder Engines unterstützt. 
   
 

Download Modul (113kb)

Download Source (113kb)

 

//Kommentare


Rodge
06/13/2008
Vielen Dank fuer das Modul!
Es hat sich fuer mich als sehr nuetzlich erwiesen, vor allem auch um gewisse Zusammenhaenge zu verstehen.
kai
03/28/2012
Hallo Mark,
guter Ansatz kann man mit diesem Modul auch Tabellen joinen?

(benötigt)

(benötigt)