4 Stimmen

MySQL und Matlab

Ich möchte von Matlab aus mit einer MySQL-Datenbank interagieren.
Ich habe eine mysql "Bibliothek" für Matlab aquí und dasselbe bei mathworks .

Ich habe die Anweisungen zum Kompilieren der Bibliothek befolgt und die Kompilierung scheint erfolgreich zu sein. Ich erhalte am Ende eine mex32-Datei. Allerdings verweisen die Anweisungen auf der ersten Seite auf eine Dll, die ich verwenden muss (ich vermute, dass eine Dll generiert werden sollte).

Ich bin weder mit dem mex-Compiler noch mit der Kompilierung externer Module für Matlab vertraut.
Übersehe ich etwas Triviales? Wo soll die Dll sein?

Gracias.

4voto

Jonas Punkte 74252

Der Verweis auf die DLL ist veraltet.

Wenn Sie eine mex-Funktion unter Windows kompilieren, kompilieren Sie sie als dll (nicht als .exe). Daher hatten kompilierte mex-Funktionen früher die Erweiterung .dll. Mex-Funktionen mit .dll-Erweiterungen funktionieren immer noch, aber es gibt eine Warnung, dass dies in Zukunft nicht mehr der Fall sein könnte.

Als 64-Bit-Windows aufkam, brauchte TheMathWorks eine Möglichkeit, dieselbe mex-Funktion sowohl für Win32 als auch für Win64 zu kompilieren, also änderten sie die Erweiterung in .mexw32 bzw. .mexw64. Offensichtlich haben sie die Dokumentation nicht vollständig aktualisiert.

4voto

Adrian Punkte 3206

Ich empfehle die Verwendung von Java zur Verbindung von MATLAB und MySQL (oder einer anderen Datenbank, falls erforderlich).

Der Java Database Connector ist einfach einzurichten. Ich habe eine einfache Java-Klasse zur Verbindung mit der Datenbank erstellt - siehe vorherige Buchung für eine grobe, aber funktionierende Lösung.

Der MATLAB-Code funktioniert wie folgt

% include java class
import Jam.ConnectToDatabase

% set up database connection info
userName='myName';
userPassword='myPassword';
databaseUrl='jdbc:mysql://glnd2818898.internal.net/2000';

% create java class instance and open connection to the database
ctd = ConnectToDatabase;
ctd.openConnection(userName, userPassword, databaseUrl)

Sobald die Verbindung geöffnet ist, kann ich die Java-Methoden verwenden, um SQL-Abfragen zu stellen, Tabellen zu erstellen, Daten einzufügen usw. Ich hatte noch nie mit Java gearbeitet, aber ich habe Netbeans und ich war weg.

0voto

Shaihi Punkte 3912

OK, hier ist die Lösung für mein Problem.
Die Kompilierung erzeugt eine mex32-Datei (32, weil ich sie unter einem 32-Bit-System kompiliert habe). Sie können die Ausgabedatei der Kompilierung überprüfen, indem Sie mexext . Offenbar ist eine mex32-Datei eine kompilierte Version der C Datei.
Sobald ich die Datei in einem Verzeichnis platziert habe, das sich im Matlab-Pfad befindet, hat es funktioniert.

Ich schätze, der Verweis auf die Dll in dem von mir angegebenen Link ist entweder veraltet oder falsch.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X