In einer Extbase- Extension Daten aus einer externen Datenbank abfragen

  • michak michak
    T3PO
    0 x
    15 Beiträge
    0 Hilfreiche Beiträge
    21. 09. 2012, 16:49

    Hallo,

    Ich bin auf der Suche nach einem aktuellen Tutorial wie ich eine externe Datenbank aus einer Extbase-Extension heraus ansprechen kann. Bei meiner Suche bin ich nur auf veraltete und unvollständige Anleitungen gestoßen.

    Ich will nicht komplett auf die externe DB umstellen, sondern nur Abfragen an die die externe DB schicken und das Ergebnis auswerten und anzeigen.

    Installiert habe ich schon die Extension ADOdb, DBAL und datasources. Nur so recht will das nicht bei mir klappen. Wo muss ich welche Extension wie ansprechen. Auch ob datasources wirklich notwendig ist, hat sich mir noch nicht gänzlich erschlossen.

    Für die datasources habe ich zwar schon eine FlexForms.xml im Hauptordner meiner Extension erstellt und die Extension in der ext_localconf.php meiner Extension registriert. Jedoch finde ich hier einfach nicht wo ich den besagten „data source record“ anlegen kann. Da ist kein Eintrag im Auswahlmenü. Ich glaub ich versteh die Anleitung nicht!

    Weiß jemand wo dass mal sauber von Anfang bis Ende durch beschrieben ist?

    TYPO3 Ver. 4.7.4


  • 1
  • michak michak
    T3PO
    0 x
    15 Beiträge
    0 Hilfreiche Beiträge
    24. 10. 2012, 14:53

    Update...

    Arbeite nun nur noch mit ADOdb und DBAL.
    Ich versuche in meinem FE-Plugin Daten aus einer externen Oracle DB auszulesen.
    Zur Oracle DB habe ich alle erforderlichen Verbindungdaten.
    Username, Password, Host und SID.
    Eine Verbindung über eine Ocale-Cliensoftware unter Windows klappt problemlos.
    Meine ext_localconf.php sieht wie folgt aus.

    1. $TYPO3_CONF_VARS['EXTCONF']['dbal']['handlerCfg'] = array (
    2. '_DEFAULT' => array (
    3. 'type' => 'native',
    4. 'config' => array(
    5. 'username' => '', // Set by default (overridden)
    6. 'password' => '', // Set by default (overridden)
    7. 'host' => '', // Set by default (overridden)
    8. 'database' => '', // Set by default (overridden)
    9. )
    10. ),
    11.  
    12. 'idm_oracle_db' => array(
    13. 'type' => 'adodb',
    14. 'config' => array (
    15. 'username' => 'max',
    16. 'password' => 'test',
    17. 'host' => '123456',
    18. 'port' => '1521',
    19. 'database' => 'orcl',
    20. 'driver' => 'oci8', // oci8 für Oracle
    21. 'driverOptions' => array(
    22. 'connectSID' => TRUE,
    23. ),
    24. )
    25. ),
    26. );
    27.  
    28. $TYPO3_CONF_VARS['EXTCONF']['dbal']['table2handlerKeys'] = array (
    29. 'IDM' => 'idm_oracle_db',
    30. '"IDM"."VW_PERSON"' => 'idm_oracle_db',
    31. 'VW_PERSON' => 'idm_oracle_db',
    32. );

    Jedoch wenn ich eine Anfrage stelle liefert TYPO3 im FE entweder eine weiße Seite aus oder sagt zumindest (wenn ich mir das Ergebnis-Array per debug ausgeben lasst) das dass Array lehr ist. :-(
    Da Oracle ja wohl irgendwie mit Schemas statt Datenbanken arbeitet bin ich mir nicht ganz sicher ob ich aus TYPO3 heraus die DB richtig anspreche. Ist SID in diesem Fall gleich dem Parameter database aus der dbal Konfiguration? Ich habe als SID=orcl erhlaten. In der Oracle-Clientsoftware gibt es dann aber noch eine Schemata bzw. einen Benutzer mit dem Namen IDM und darin sind dann die einzelnen Tabellen/Views welche ich ansprechen möchte.
    Eine Anfrage in der Clientsoftware würde wie folgt aussehen.
    1. SELECT * FROM "IDM"."VW_ACCOUNT"

    Hier wird also mit idm.vw_account erst ein Schemata/Benutzer und dann die darin befindliche Tabelle angesprochen.

    Wo liegt mein Denkfehler?
    Je nach dem wie ich die Anfragen über exec_SELECTquery formuliere variieren die Fehlermeldungen. Habe schon "IDM"."VW_ACCOUNT" nur VW_ACCOUNT oder IDM.VW_ACCOUNT probiert.

  • 1