Pfadangabe bei Connections? - MySQL

Moin,
ich schwanke schon den ganzen Tag mit ByteWelt und JFO, letztendlich werde ich meine Fragen hier posten.
Egal, zurück zum Topic. Ich möchte in meinem Programm eine Datenbank einlesen und teilweise auch beschreiben, das Programm soll später von mehreren Rechnern genutzt werden, also muss die Datenbank irgendwo in Nirvana und nicht auf den Rechnern der Anwender liegen. So habe ich mir eine Datenbank bei db4free.net registriert, da ich bei meinem ursprünglichen Hoster, Square7, keine externen Verbindungen aufbauen kann/darf. Nun weiß ich aber überhaupt nicht, wie ich die Verbindung überhaupt herstelle bzw. richtig angebe. Ich habe nach diesen Tutorials gearbeitet:
http://www.itblogging.de/java/java-mysql-jdbc-tutorial/
http://dev.mysql.com/doc/refman/5.1/de/connector-j-usagenotes-basic.html
http://webcache.googleusercontent.com/search?q=cache:http%3A%2F%2Fwww.java-forum.org%2Fnetzwerkprogrammierung%2F110227-java-login-mysql.html

Jedoch ohne Erfolg, ich weiß auch nicht ob ich überhaupt die Treiber richtig installiert habe, denn ich denke die „.jar“ die man ins Package einbinden muss solle eigentlich „com.mysql.jdbc.Driver.jsr“ heißen, bei mir heißt sie jedoch „mysql-connector-java-5.1.26-bin.jar“.

Der Code nach den Tutorials:

package de.Vailfire.CityBarLauncher;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

// Achtung, nicht com.mysql.jdbc.* importieren,
// sonst bekommen Sie Probleme!

public class MysqlConnector {
    public static void MysqlConnector() {
        try {
            // Der Aufruf von newInstance() ist ein Workaround
            // für einige misslungene Java-Implementierungen

            Class.forName("com.mysql.jdbc.Driver").newInstance();
        } catch (Exception ex) {
            // Fehler behandeln
        }
        try {
            Connection conn = DriverManager.getConnection("jdbc:mysql://db4free.net/citybar?user=vailfire&password=***Sag ich euch nicht!***");

            // Verbindung benutzen
        } catch (SQLException ex) {
            // Fehler behandeln
            System.out.println("SQLException: " + ex.getMessage());
            System.out.println("SQLState: " + ex.getSQLState());
            System.out.println("VendorError: " + ex.getErrorCode());
        }
}}

Der Fehler in der Konsole:

CONSOLE: LoadingScreen created, intializing loadable objects ... 
CONSOLE: Loading finished! Creating LauncherFrame
SQLException: No suitable driver found for jdbc:mysql://db4free.net/citybar?user=vailfire&password=***Sag ich euch nicht!***
SQLState: 08001
VendorError: 0

Ich hoffe um baldige Hilfe, auch wenn ich jetzt im falschem Forum gepostet hab :stuck_out_tongue:
Mfg
Vailfire

Es hat seine Gründe warum Datenbanken nicht von extern erreichbar sind. Alles unsicher. Ich weiß, dass es mehr Aufwand ist, aber schalte einen Webservice dazwischen.

Der Aufwand ist mir recht egal, mein Problem ist nur, dass ich null Ahnung von php habe, alles was ich hinkrieg ist ein echo ^^.
Über diese Zwischenscripte habe ich schon gelesen, weiß aber auch nicht wie solche realisierbar sind :frowning: .

Muss ja nicht PHP sein. Kann auch Java sein.

Eben nicht, mir steht nämlich nicht das Geld für einen VServer geschweige denn Rootserver zur Verfügung, daher kann ich maximal einen kostenlosen Webspace verwenden.

Probier es mal mit:
DriverManager.getConnection("jdbc:mysql://db4free.net:3306/Datenbankname einsetzen", "User einsetzen", "Passwort einsetzen");
Du hast den Port des Servers weggelassen. Ich hoffe mal dass der Port noch stimmt.

Ansonsten gilt:

Ist besser wenn du es gleich richtig machst.

Hast du denn auch den Classpath richtig gesetzt?
Solche Scherze wie:

  // Fehler behandeln
}```
kann man sich direkt sparen. Wenigstens ex.printStackTrace() muss schon rein. Vermutlich wird der Treiber wirklich nicht gefunden (was mich jedoch ein wenig wundert)

Hallo,

bei server4you und bei hetzner kannst du Webspace mieten mi externen Datenbanken.

Gruß,

Martin

[QUOTE=KlemensyXYZ]Probier es mal mit:
DriverManager.getConnection("jdbc:mysql://db4free.net:3306/Datenbankname einsetzen", "User einsetzen", "Passwort einsetzen");
Du hast den Port des Servers weggelassen. Ich hoffe mal dass der Port noch stimmt.
[/QUOTE]
Ging leider auch nicht :frowning:
Ich denke ich mach das dann doch über ein „.php“-Script, ist genau das aber nicht auch unsicher? Weil es kann ja dann jeder auf das Script zugreifen und SQL-Befehle senden, oder wäre ein Passwortschutz für das Script empfehlenswert?
Mfg
Vailfire

Also imho ist das jacke wie hose.

Du kannst natürlich einen User an dein Request hängen. (Nicht htaccess)

In einem privaten Projekt, dass kaum oder wenig kommerziell ist, würde ich den Anbieter kontaktieren und die die Datenbank veröffentlichen. Also extern verfügbar machen.

Wie ich beschrieben habe, bieten dies auch einzelne Provider so an.

Bei DB4Free hast du auch externen Zugang.

Du kannst vorher sogar festlegen von welcher IP darauf zugegriffen werden kann. - Das Projekt wrde sonst kaum Sinn machen.

Das php-Script darf nicht generisch sein, sondern muss die SQL-Queries „eingebaut“ haben. Das Script bekommt dann einen abstrakten Befehl wie „gib mir die Adresse von User XY aus“, prüft dann, ob der angemeldete Nutzer die Adresse sehen darf, führt die eingebauteQuery dann aus und liefert nur den Datensatz zurück.

[QUOTE=Vailfire]Ging leider auch nicht :frowning:
[…][/QUOTE]

ich kann mich damit auf eine Datenbank dort verbinden.

Mein Quellcode
[spoiler]

Connection con;
try
{
	Class.forName("com.mysql.jdbc.Driver");
	System.out.println("...Treiber erfolgreich geladen");
	con = DriverManager.getConnection("jdbc:mysql://db4free.net:3306/meineTestDB", "xxxxxxxxxxxxx", "123456789");
	System.out.println("...Verbindung erfolgreich aufgebaut");
}
catch(Exception e)
{
	System.out.println("Fehler " + e);
}

[/spoiler]

Deshalb denke ich es liegt da dran:

[QUOTE=XHelp;26481]Hast du denn auch den Classpath richtig gesetzt?
[…] Vermutlich wird der Treiber wirklich nicht gefunden (was mich jedoch ein wenig wundert)[/QUOTE]

Ich habs jetzt erstmal per Hand mit diesem kleinem Php Code probiert:

<?php 
 $link = mysql_connect('localhost', 'citybar', $_GET["pw"]);
if ($link) {
echo "Connected!"; 
echo (mysql_query($_GET["com"]));
} else {
    die('Verbindung schlug fehl: ' . mysql_error());
}
 ?>

Er kriegt zwar die Verbindung hin, gibt aber nicht meine Testtabelle aus :frowning:
Als Testtabelle und SQL-Befehl habe ich dieses Tutorial befolgt:
http://www.1keydata.com/de/sql/sql-select.php

Mein Link lautete also:

http://citybar.square7.ch/conenctor.php?pw=**GEHEIM**&com=SELECT%20Store_Name%20FROM%20Store_Information

Weil mysql_query nicht direkt eine Tabelle zurückgibt, sondern nur eine Ressource. Sie Doku dazu,.