thecman: datenbankanbindung

hallo,

ich habe eine webserver auf dem ich eine sql- datenbank habe!
die daten bank ist im ordner mysqladmin

z.b.: www.site.de/mysqladmin

die datenbank heisst: DB55555

und ich möchte die url zum datenbankserver in eine string-variable speichern
wie muss das aussehen?

String url = "jdbc:mysql://www.site.de/mysqladmin";
oder
String url = "jdbc:mysql://site.de/DB55555";

oder ganz anders??!!

ich weiss nicht wie ich die url aufbaue!!

könnt ihr die beispiel werte benutzen wie die ich oben gennant habe!!! weil ich sonst immer durcheinander komme!!

ich hoffe ihr könnt mir helfen!

  1. String url = "jdbc:mysql://www.site.de/mysqladmin";
    oder
    String url = "jdbc:mysql://site.de/DB55555";

    oder ganz anders??!!

    hmmm, du brauchst den Treiber, vermutlich den hier:
    http://www.mysql.com/downloads/api-jdbc-stable.html

    und dann die Anleitung lesen:
    http://www.mysql.com/documentation/connector-j/index.html

    da steht alles drin.

    Dominik

    1. ich habe die .jar datei eingefügt!! ich habe nur ein problem mit der erstellung der url!!
      überall steht:
      ("jdbc:mysql://localhost/test?user=monty&password=greatsqldb");

      nur ich kann damit nichts anfangen!

      kann mir bitte jemand anhand meiner daten die werte eintragen?

      das wäre nett!

      DANKE!!!

      1. ich habe die .jar datei eingefügt!! ich habe nur ein problem mit der erstellung der url!!
        überall steht:
        ("jdbc:mysql://localhost/test?user=monty&password=greatsqldb");

        nur ich kann damit nichts anfangen!

        kann mir bitte jemand anhand meiner daten die werte eintragen?

        hmm, ist doch eigentlich ganz einfach:

        • localhost ist richtig, wenn das Java Programm und die Datenbank auf dem selben Rechner laufen. Das wird bei Dir wahrscheinlich so sein. (ansonsten durch den Rechnernamen oder die IP Adresse ersetzen)
        • "test" durch den Namen der Datenbank ersetzen
        • "monty" durch den Usernamen
        • "greatsqldb" durch das Passwort

        Dominik

        1. hmm, ist doch eigentlich ganz einfach:

          • localhost ist richtig, wenn das Java Programm und die Datenbank auf dem selben Rechner laufen. Das wird bei Dir wahrscheinlich so sein. (ansonsten durch den Rechnernamen oder die IP Adresse ersetzen)
          • "test" durch den Namen der Datenbank ersetzen
          • "monty" durch den Usernamen
          • "greatsqldb" durch das Passwort

          Dominik

          wenn ich das alles dann in der variable url gespeichert habe kann ich die dann übergebenß

          z.b.:
          Connection con = DriverManager.getConnection(url);

          folgende fehlermeldung wird ausgegeben:
          General error,  message from server: "Access denied for user: 'DB55555@p508251EC.dip.t-dialin.net' to database 'DB55555'"

          1. folgende fehlermeldung wird ausgegeben:
            General error,  message from server: "Access denied for user: 'DB55555@p508251EC.dip.t-dialin.net' to database 'DB55555'"

            hmm, wie ist dein Connect string (ohne Passwort)?
            Läuft die DB auf deinem Rechner?
            Die Meldung bedeutet dass Username und/oder Passwort falsch sind.

            Dominik

            1. hmm, wie ist dein Connect string (ohne Passwort)?
              Läuft die DB auf deinem Rechner?
              Die Meldung bedeutet dass Username und/oder Passwort falsch sind.

              Dominik

              der connect string ist dieser:
              String url = "jdbc:mysql://81.209.100.06/DB55555?user=DB55555&password=password";

              Connection con = DriverManager.getConnection(url);

              wobei ich das password und datenbanknamen geänder habe!aber der aufbau ist dieser!

              die datenbank ist nicht auf meinem rechner!sondern auf meiner domain!
              beispiel: www.seite.de/mysqladmin
              in mysqladmin ist die datenban die DB55555 heisst drin!!! und auf die habe ich zugegriffen!
              die ip habe ich durch den ping von www.seite.de bekommen!!
              oder kann ich anstatt ip nur www.seite.de oder http://ww.seite.de eingeben?!

              1. die ip habe ich durch den ping von www.seite.de bekommen!!
                oder kann ich anstatt ip nur www.seite.de oder http://ww.seite.de eingeben?!

                du kannst es ja mal mit www.seite.de (natürlich den richtigen Rechnernamen verwenden...) versuchen (wenn der DB Server auf dem selben Rechner läuft).
                Es sieht aber so aus als ob der Fernzugriff deaktiviert wäre.
                Eventuell solltest du das FAQ/HOWTO des Anbieters lesen oder den Support fragen.
                Bist du sicher dass DBName und username identisch sind? (DB55555)

                Dominik

              2. Hallo!

                der connect string ist dieser:
                String url = "jdbc:mysql://81.209.100.06/DB55555?user=DB55555&password=password";

                Connection con = DriverManager.getConnection(url);

                wobei ich das password und datenbanknamen geänder habe!aber der aufbau ist dieser!

                die datenbank ist nicht auf meinem rechner!sondern auf meiner domain!

                bist Du sicher dass die Datenbank überhaupt nach außen offen ist?

                Versuche mal folgendes im der Eingabeaufforderung:

                telnet 81.209.100.06 3306

                Geht das? Von mir aus nicht. Versuche es mal mit dem Hostnamen, aber das wird vermutlich auch nicht gehen, da der vorher in die IP aufgelöst wird.

                Wenn es funktioniert hast Du eine Verbindung zu MySQL, zumindest steht dann da _nicht_ "Verbinden Fehlgeschlagen".

                beispiel: www.seite.de/mysqladmin

                Verwechsele nicht die URL mit der JDBC-Schreibweise oben, das sind 2 grundverschiedene Dinge.
                Was URLs sind steht hier: http://www.w3.org/Addressing/#terms

                Die schreibweise von JDBC lehnt sich lediglich an diese Syntax an, macht damit aber was völlig anders, es ist lediglich eine einfache und einleuchtende Syntax eine DB-Resource zu beschreiben.

                beispiel: www.seite.de/mysqladmin

                Die Datenbank ist dort sicher nicht. Mag sein dass das der Pfad zu einem Administrationstool ist, aber die Datenbank ist ein eigenes Server-Programm, welches neben dem Webserver(den Du über obige URL erreichst) als Dämnonprozess läuft, und je nachdem lauscht sie evtl.(!) an Port 3306, dann kannst Du die Datenbank auch direkt per Java ansprechen.

                Wenn die Datenbank aber nicht den Port 3306 abhört kannst Du Dich auf den Kopf stellen, dann werden nur Programme die auf demselben Rechner liegen wie die Datenbank selbst, sich mit dieser verbinden können(z.B. PHP oder JSP... je nachdem was verfügbar ist). Das ist eine Einstellungssache ob die DB nach außen erreichbar ist oder nicht. Die meisten Provider deaktivieren dies, um kein Sicherheitsrisiko einzugehen.

                in mysqladmin ist die datenban die DB55555 heisst drin!!! und auf die habe ich zugegriffen!

                Du hast es versucht. Ich kenen mich mit den Fehlermeldungen von JDBC nicht aus, ers hört sich zumindest so an als hättest Du Dich erfolgreich verbinden könnens, bist dann aber nicht akzeptiert worden. Ich bezweifele dagegen dass Du erfolgreich eine Verbindung herstellen konntest, ich gehe mal davon aus dass Du die Zugangsdaten korrekt angegeben hast.

                die ip habe ich durch den ping von www.seite.de bekommen!!

                Es ist durchaus möglich dass sich diese IP ändert, daher würde ich lieber den Hostnamen verwenden, der Rechner auf dem das Java-programm dann mal läuft wird dann ggfs. die IP per DNS-Abfrage heruasbekommen, das macht Dein Browser z.B. dauernd wenn Du auf neue Domainnamen gehst.

                oder kann ich anstatt ip nur www.seite.de oder http://ww.seite.de eingeben?!

                ersteres würde ich nehmen, http:// ist denke ich nicht erlaubt in der JDBC Syntax. Aber wie gesagt, teste per Telnet ob Du Dich überhaupt mit dem Server verbinden kannst:

                Um den Unterschied zu sehen, versuche Dich mal mit dem Webserver zu verbinden:

                telnet www.seite.de 80
                Normalerweise bekommst Du dann ein leeres Terminal, da kannst Du dann einen HTTP-Request eingeben wie ihn ein Browser senden würde, z.B.:

                GET / HTTP/1.0 [enter]
                host: www.seite.de [enter]
                [enter]

                und danach mal mit dem MySQL-Server:

                telnet www.seite.de 3306

                Grüße
                Andreas

                PS: 3306 ist der Standardport für MySQL, evtl. wird ein anderer verwendet, auch wenn das ist eher unwahrscheinlich ist.