ODBC Verbindung

L I V E Stammtisch ab 20:30 Uhr im Chat
  • Moinsen,

    kann mir einer von euch sagen wie ich mit dem raspberry eine ODBC Verbindung aufbauen bzw. erstmal testen kann.
    Es soll mit ein MySQL Server in Netzwerk verbunden werden.

    Danke im Voraus.

  • Also, etwas mehr Info braucht man schon, wenn man deine Frage beantworten will. Welche Programmiersprache möchtest du denn verwenden? Was für ein System soll das werden? Clientprogramm? Webanwendung?
    Ansonsten hilft dir vielleicht Google mit dem Suchbegriff "Python MySQL".

    Oh, man kann hier unliebsame Nutzer blockieren. Wie praktisch!

    Einmal editiert, zuletzt von Gnom (13. April 2017 um 10:24)

  • ODBC??? Warum installierst du Dir nicht den msql client auf dem Raspberry und verbindest dich mit dem DB server?

    --
    man ist das System-Anzeigeprogramm für die Handbuchseiten von Linux.

  • Solange wir nicht erfahren, was du vorhast, wird es schwierig, Empfehlungen zu geben.
    Willst du eine Anwendung programmieren oder nur nur mal in die Tabellen schauen oder nur wissen, ob der Server connected werden kann?
    Für PHP und Python gibt es ODBC-Bibliotheken. Muss es denn wirklich ODBC sein oder kannst du auch die "üblichen" Methoden nutzen?

    Oh, man kann hier unliebsame Nutzer blockieren. Wie praktisch!


  • ODBC??? Warum installierst du Dir nicht den msql client auf dem Raspberry und verbindest dich mit dem DB server?

    das habe ich versucht.

    installiert sind Apache webserver,php5,mysql-Client

    wenn ich micht dem cmd line Befehl: mysql --hostname --user --pwd verbinden will bekomme ich "cant connect ... (111)"

    Unter Windows konnte ich mich auf die Datenbank verbinden. Dort wird der Treiber MicroStrategy.... verwendet und mir de Connection String "Driver=Microstrategy..." angezeigt. Wenn ich das richtig vertehe wird diese Art der Verbindung mit ODBC realisiert.

    Bin auf dem falschen Weg?
    Automatisch zusammengefügt:

    Das ist das Script was ich verwende:

    <html>
    <head>
    <title>Konfig</title>
    <meta http-equiv="refresh" content="600">
    </head>
    <body>
    HTML wird ausgeführt...
    <br>
    </body>
    </html>

    <?php
    echo "PHP Script gestartet...";
    echo "<br>";
    $_db_host = "XXXXXXX2";
    $_db_username = "XXXrk";
    $_db_passwort = "XXXXXX;
    $_db_datenbank = "XXX";

    echo "nach den variablen";
    echo "<br>";

    $connect_string = "DRIVER={MicroStrategy ODBC Driver for SQL Server Wire Protocol Desktop};Server$_db_host;DATABASE=$_db_datenbank;AuthenticationMethod=1";

    echo "nach connect_string";
    echo "<br>";

    $link = odbc_pconnect($connect_string,$_db_username,$_db_passwort,$SQL_CUR_USE_DRIVER);

    print $link;
    #Verbindungsaufbau
    echo "Verbindung zur Datenbank wird hergestellt...";
    echo "<br>";


    #$_link=odbc_connect($connect_string,$_db_username,$_db_passwort);

    echo "Punkt3";
    echo "Ich bin bei Punkt2 angelangt";
    echo "<br>";


    # Prüfen ob die Verbindung geklappt hat
    if ($link)
    {
    echo "Verbindung zur Datenbank aufgebaut! ";
    }
    else
    {
    echo "Verbindung zur Datenbank erfolgreich.<br>";
    }


    ?>
    Automatisch zusammengefügt:

    Das letzte echo was mir da angezeigt wird ist das:

    echo "nach connect_string";


    Danach kommt nix mehr.
    Automatisch zusammengefügt:


    Solange wir nicht erfahren, was du vorhast, wird es schwierig, Empfehlungen zu geben.
    Willst du eine Anwendung programmieren oder nur nur mal in die Tabellen schauen oder nur wissen, ob der Server connected werden kann?
    Für PHP und Python gibt es ODBC-Bibliotheken. Muss es denn wirklich ODBC sein oder kannst du auch die "üblichen" Methoden nutzen?

    Vorab wollte ich erstmal prüfen ob ich vom Raspberry überhaupt eine Verbindung zur Datenbank erstellen kann. Wenn ich weiß das das geht, kann ich mir die nächsten Schritte anschauen.

    Wie die Verbindung aufgebaut wird ist mir letztlich egal. Bn für alle Vorschläge offen.

    Einmal editiert, zuletzt von fantamongo (13. April 2017 um 13:37)

  • Solange die IP des Pi und der SQL-User von dieser IP nicht vom mySQL-Admin freigeschaltet wird, kann auch nichts funktionieren. Egal, ob mit OBDB gegen die Einbahn, oder mit den mySQL Tools direkt mit dem mySQL Server kommuniziert wird.

    Ist der genannte OBDB-Treiber am pi installiert ?

    Servus !

    RTFM = Read The Factory Manual, oder so

    Einmal editiert, zuletzt von RTFM (13. April 2017 um 15:55)


  • Das letzte echo was mir da angezeigt wird ist das:
    echo "nach connect_string";
    Danach kommt nix mehr.

    Nichts? Keine Fehlermeldung? Bricht das Programm ab oder hängt sich der Pi auf? Wie lange hast du gewartet?
    Normal müsste der Befehl entweder die Verbindung oder eine 0 (false) zurückgeben.

    Wieso benutzt du hier pconnect statt connect? Persistente Verbindung brauchst du hier im Test ja erstmal nicht.

    Oh, man kann hier unliebsame Nutzer blockieren. Wie praktisch!

  • Nichts? Keine Fehlermeldung? Bricht das Programm ab oder hängt sich der Pi auf? Wie lange hast du gewartet?
    Normal müsste der Befehl entweder die Verbindung oder eine 0 (false) zurückgeben.

    Wieso benutzt du hier pconnect statt connect? Persistente Verbindung brauchst du hier im Test ja erstmal nicht.

    Die Ausgabe erfolgt direkt im Browser, daher keine Fehlermeldung.
    Schreiben tue ich das Skript in nano.

    Habe nun festgestellt, dass ich die Verbindung zur MSSQL DAtenbank aufbauen muss.

    Aber hier sieht der Code fast identisch aus:

    [code=php]<html>
    <head>
    <title>Konfig</title>
    <meta http-equiv="refresh" content="600">
    </head>
    <body>
    HTML wird ausgeführt...
    <br>
    </body>
    </html>

    <?php
    echo "PHP Script gestartet...";
    echo "<br>";
    $_db_host = 'XXXX:1433';
    $_db_username = 'XXX';
    $_db_passwort = 'XXX';
    $_db_datenbank = 'XX';

    echo "Verbindungsaufbau...";

    $link = $mssql_connect ($_db_host, $_db_username, $_db_passwort);

    echo "Nach Verbindungsaufbau";

    if($link){
    echo "Verbindung da";
    }
    else{
    echo "Verbindung nicht da";
    }

    ?>[/php]

    Das letze echo hier ist ebenfalls: echo "Verbindungsaufbau...";

    Kann mir jemand sagen welche Voraussetzungen (evtl. libs oder Treiber) auf dem Pi gegeben sein müssen, damit ich die Verbindung überhaupt aufbauen kann?

    Einmal editiert, zuletzt von fantamongo (13. April 2017 um 16:18)

  • Mit phpinfo() kannst du dir anzeigen lassen, welche Module geladen sind - da müsste auch MySQL dabei sein.

    Ich finde es seltsam, dass du die Browserseite erhältst aber keine Ausgaben nach dem Connect.
    Die Fehlermeldungen erscheinen normalerweise auch im Browser, wenn das Programm nicht funktioniert.
    Schau dir doch mal den zurückgelieferten HTML-Code an.
    Kannst du testweise eine lokale Datenbank auf dem Pi ansprechen?
    versuch mal das Ergebnis des Connect direkt anzuzeigen: echo $mssql_connect( ...
    Ich weiß aber nicht, ob das überhaupt möglich ist. Wenn ja, sollte er "false/0" ausgeben oder Daten des Objekts.
    Automatisch zusammengefügt:
    Es gibt verschiedene Methoden, um auf MySQL Datenbanken zuzugreifen. Entsprechend variieren die Befehle:
    $link = mysqli_connect("localhost", "Benutzername", "Passwort", "Datenbankname");
    $link = mysql_connect("localhost", "Benutzername","Passwort")
    $pdo = new PDO('mysql:host=localhost;dbname=test', 'username', 'password');

    Was mir auffällt: In deinem Code steht "mssql" statt "mysql" - vielleicht ist das schon der Fehler. Du hast doch eine MySQL-Datenbank? Oder doch MSSQL?

    Oh, man kann hier unliebsame Nutzer blockieren. Wie praktisch!

    Einmal editiert, zuletzt von Gnom (13. April 2017 um 16:59)

  • Ich danke allen, insbesondere "Gnom", die mir dabei geholfen.
    Ich habe das Problem gelöst.

    Die Lösung war folgender Zeilencode:
    $link = mssql_connect("localhost", "Benutzername", "Passwort", "Datenbankname");
    Bei mir war der Datenbankname nicht mit angegeben.

    DANKE!

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!