PDA

View Full Version : Mysql odbc Iseries



rr2001
13-11-14, 10:42
Anforderung: auf PC laufen C++ Anwendungen, diese greifen via iSeries ODBC-Treiber auf die Iseries-Datenbank zu. Damit die C++ Anwendungen diese Daten interpretieren können, ist eine BDE (Borland Database Engine) auf den PC's installiert.
Nun sollte diese BDE durch eine andere Datenbank abgelöst werden,
da die BDE, sobald diese auf Windows-Server läuft, fehleranfällig ist.
Möglich wäre mysql.
Kann mir jemand mitteilen, wo und wie ich die ODBC-Konfiguration in mysql durchführen kann?

Vielen Dank!
RR

Fuerchau
13-11-14, 11:28
Da ist aber grundsätzlich was falsch gelaufen.
Wenn ich per "#Import"-Direktive die ADODB-Objekte importiere kann ich mittels COM Connection-/Command- und Recordset-Objekte einbinden.
Ich benötige keinerlei zusätzliche Software da ADODB auf Windows immer verfügbar ist.

Beispiele gibt es dazu genug in der MSDN:
http://msdn.microsoft.com/en-us/library/windows/desktop/ms677563(v=vs.85).aspx

Es ist sogar ein DataBinding möglich, d.h., dass C++-Variablen direkt an Command/Recordsets gebunden werden.

rr2001
13-11-14, 11:46
jaja, das ist schon richtig.
Aber: die Software wurde vor ca. 10 Jahren mittels ML4-Entwicklungstool geschrieben, da hatte man sich an gewisse Vorgaben zu halten, u. a. die Verwendung der Borland Database Engine.
Es wäre zu umfangreich, die C-Sourcecodes an die neuen Gegebenheiten anzupassen.
Deshalb würde ich gerne die BDE durch eine andere Datenbank ablösen...

Fuerchau
13-11-14, 13:08
So ganz verstehe ich das hier nicht.
Auch für eine andere DB musst du ggf. alle Quellen anpassen.
Wie werden die Aufrufe denn zur Zeit durchgeführt?
Hast du da mal ein Beispiel?

Wenn du eine DB nur als "Passthru"-SQL verwenden möchtest bietet sich auch eine MS-Access-MDB an. In dieser kannst du alle Tabellen ale "Verknüpfte Tabellen" hinterlegen.

Soweit ich weiß, unterstützt MySQL eben keine "Linked Server" außer auf sich selbst:
http://stackoverflow.com/questions/5370970/how-to-create-linked-server-mysql

Ggf. kann man auch den "SQL-Server Express" verwenden um von dort aus via "Linked-Server" zur AS/400 zu kommen.

Aber trotzdem. Vielleicht ergibt dein Beispiel ja was für Methoden möglich sind.

PS:
Warum nimmst du nicht weiter ML4?
Die entwickeln sich ja auch weiter.

rr2001
14-11-14, 09:27
geschätzter Fürchau,
der Ablauf sieht so aus:
ich richte am PC eine ODBC-Datenquelle zur iSeries ein.
Diese ODBC-Datenquelle hinterlege ich in der BDE-Konfiguration.
In der BDE-Konfiguration entsteht dadurch eine sogenannte Alias-Datenbank.
In der ML4-Entwicklungsumgebung wird diese Alias-Datenbank als Referenz zur iSeries DB verwendet.
Soweit die Entwicklungsumgebung.
Leider muss die BDE auch auf jedem PC, auf dem die Anwendung laufen soll, installiert werden.
Dabei kommt es zu Problemen, wenn es sich um einen Windows-Server handelt.
Deshalb möchte ich bei den Anwendern, die auf einem Windows-Server arbeiten, eine Alternative zur BDE ermitteln.
Derzeit warte ich noch auf eine Stellungnahme der ML-Software.
Darf mich anschließend wieder melden.
Einstweilen vielen Dank!

Fuerchau
14-11-14, 11:09
Ohne Neuprogrammierung bzw. Wrapper-Funktionen wirst du mit einer anderen Datenbank wohl nicht weiterkommen.
Ggf. prüfe doch mal folgendes:
http://www.df3cb.com/bv/bde.html
Die Berechtigungsstrukturen haben sich ab Windows7/Server 2003 ff halt geändert seit es keinen echten Admin (nur nach Spezialeingriffen) mehr gibt.
Alt-Software hat da mitunter Probleme.
Auch gibt es Probleme bei 32-bit/64-Bit-Windows.
Wenn du auf 64-Bit-Windows die ODBC-Verwaltung aufrufst, kannst du keine 32-Bit-ODBC Verwalten. Dias Programm befindet sich in der SYSWOW64 "odbcad32.exe".
So ganz geht aus der BDE auch nicht hervor, ob z.B. ADODB-Lib's und/oder DAO und/oder MS-Access-Treiber (Jet 3.5/Jet.4.0) benötigt werden.
Ab einer bestimmten Windowsversion gibt es die nicht mehr automatisch!
Diese werden erst (letztmalig) mit (ich glaube) Office2003 oder früher installiert. Anders wird sich (für mich) der komfortable ODBC-Zugriff nicht erklären da ich vermute, dass de BDE nicht per CLI (Native-C) auf ODBC zugreift.

Mittels Sysinternals Processexplorer kann man die verwendeten DLL's eines Prozesses ansehen und diese auf Vorhandensein im Ziel-PC prüfen.
msad*, msda* gehören zu ADO und sind in Windows Standard.
msj* sind die Jet-Bibliotheken die nicht mehr im Windows vorhanden sind und nachinstalliert werden müssen. Diese gibt's übrigens nur in 32-Bit!

Unser BI-Anwendung (seit Windows-XP in VB6 und C++) läuft im 32-Bit-Modus bis Windows 8.1 und Server 2012R2 absolut problemlos ohne Kompatibilitätseinstellungen!

BenderD
14-11-14, 11:35
... für mich sieht das eher so aus, dass ML4 die BDE als Datenbankzugriffsschicht verwendet hat und diese als Abstraktionsschicht für ODBC verwendet hat (seltsame Idee, eine proprietäre Schnittstelle zur Entkoppelung einer Standard Schnittstelle zu benutzen). Wenn da eine Chance besteht, das zu retten, dann am ehesten mit der Zeos Lib.

D*B