Questions & Answers

SOLVED
stephang
I'm new here

Datenbankzugriff vom Modul aus

Jump to solution

Hallo Zusammen,

ich mรถchte gerne aus einem Modul heraus auf die an FirstSpirit angeschlossene MySQL Datenbank zugreifen bzw. einfach nur alle Zeilen einer Spalte in einer definierten Tabelle auslesen. Ist es mรถglich, im Modul nicht die Datenbank direkt via JDBC zu befragen, sondern FirstSpirit? In FirstSpirit ist ja bereits alles konfiguriert und hat selbst ein Implementierung zur Abfrage der Datenbank? Da kรถnnte ich die doch nutzen, oder?

Leider habe ich keine entsprechende API hierfรผr gefunden. Potentiell wรคre der QueryAgent geeignet, jedoch sehe ich keine Mรถglichkeit die Abfrage auf eine Tabelle in der Datenbank zu beschrรคnken.

Hat jemand eine Idee? Oder muss ich wirklich eine direkte Verbindung vom Modul zur Datenbank via JDBC aufbauen?

Vielen Dank fรผr Anregungen im Voraus!

1 Solution

Accepted Solutions

Hallo Sebastian,

der von dir beschrieben Weg hat mich ans Ziel gefรผhrt. Vielen Dank!

Hier mein Code:

import de.espirit.firstspirit.access.store.Store;

import de.espirit.firstspirit.access.store.Store.Type;

import de.espirit.firstspirit.access.store.templatestore.Query;

import de.espirit.firstspirit.access.store.templatestore.Schema;

import de.espirit.firstspirit.agency.SpecialistsBroker;

import de.espirit.firstspirit.agency.StoreAgent;

import de.espirit.firstspirit.service.value.ValueService;

import de.espirit.or.EntityList;

import de.espirit.or.Session;

import de.espirit.or.schema.Entity;

...

StoreAgent storeAgent = broker.requestSpecialist(StoreAgent.TYPE);

Store store = storeAgent.getStore(Type.TEMPLATESTORE);

Query query = (Query) store.getStoreElement(16060);

Schema schema = query.getSchema();

Session session = schema.getSession();

EntityList results = session.executeQuery(query.getSelectStatement());

Iterator<Entity> resultsIter = results.iterator();

while (resultsIter.hasNext())

{

     Entity element = resultsIter.next();

     ....

}

View solution in original post

3 Replies
gockel
Crownpeak employee

Hi,

In FirstSpirit ist ja bereits alles konfiguriert und hat selbst ein Implementierung zur Abfrage der Datenbank? Da kรถnnte ich die doch nutzen, oder?

auf die Schnelle ein kurzer Abriss (Pseudo-Code) und ein paar Einstiegspunkte.

  • Abfrage in FirstSpirit zusammenklicken, die die gewรผnschten Daten liefert.
  • Diese Abfrage im Modul holen "Query query = Store#getStoreElement(UID_DER_QUERY))."
  • Schema holen (Parent der Query)
  • Session (OR-Session) vom Schema holen (Session session = schema.getSession())
  • Auf dieser die Query ausfรผhren (Session#executeQuery(query.getSelectStatement())

Schema#getSession

Session#executeQuery

Query#getSelectStatement

GruรŸ

Hallo Sebastian,

der von dir beschrieben Weg hat mich ans Ziel gefรผhrt. Vielen Dank!

Hier mein Code:

import de.espirit.firstspirit.access.store.Store;

import de.espirit.firstspirit.access.store.Store.Type;

import de.espirit.firstspirit.access.store.templatestore.Query;

import de.espirit.firstspirit.access.store.templatestore.Schema;

import de.espirit.firstspirit.agency.SpecialistsBroker;

import de.espirit.firstspirit.agency.StoreAgent;

import de.espirit.firstspirit.service.value.ValueService;

import de.espirit.or.EntityList;

import de.espirit.or.Session;

import de.espirit.or.schema.Entity;

...

StoreAgent storeAgent = broker.requestSpecialist(StoreAgent.TYPE);

Store store = storeAgent.getStore(Type.TEMPLATESTORE);

Query query = (Query) store.getStoreElement(16060);

Schema schema = query.getSchema();

Session session = schema.getSession();

EntityList results = session.executeQuery(query.getSelectStatement());

Iterator<Entity> resultsIter = results.iterator();

while (resultsIter.hasNext())

{

     Entity element = resultsIter.next();

     ....

}

Hallo Stephan,

danke, dass du deine Lรถsung hier fรผr die Allgemeinheit gepostet hast. Kannst du bitte noch die Nachricht als "richtige Antwort" markieren, damit anderer Forenbenutzer sie leichter finden kรถnnen.

Viele GrรผรŸe

Thorsten

0 Kudos

Type a product name