MySQL SQL und Applets

loixl

Mitglied
Hallo,

dieser Thread könnte auch ins Deployment-Forum gehören. Ich denke aber nicht, dass ich ein "Applet-Problem" habe.

Ich sitze schon seit einer Weile vor dem Problem, dass ich meine Anwendung, die ich in NetBeans 8.0.1 erstellt habe, nicht als Applet zum Laufen bringen kann.

Die JAR des JDBC (mysql-connector-java-5.1.31-bin.jar) habe ich unter "Libraries" in NetBeans hinzugefügt und befindet sich im Projektunterordner "lib". Wenn ich im IDE die Applet-Klasse APPLET.java auswähle und "Run File" benutze, funktioniert im Applet Viewer alles wie gewollt.

Um das Applet in HTML einbinden zu können, habe ich die com- und org-Ordner der mysql-connector-java-5.1.31-bin.jar in die JAR meiner Anwendung kopiert und dort in der MANIFEST.MF-Datei die Class-Path-, X-COMMENT- und Main-Class-Zeilen gelöscht. Nur so hat das Applet überhaupt funktioniert.

Als ich es testete, funktionerte die SQL-Verbindung nicht. Das ist die SQLException, die ausgespuckt wird:
Code:
No suitable driver found for jdbc:mysql://localhost:3306/aufgaben

Es ist kein komplizierter Fehler, aber ich fand durch Googlen nichts, was mir helfen kann (schließlich funktionerte das Ganze im Applet Viewer von NetBeans).

Irgendwelche Ideen? Es könnte gut sein, dass ich hier etwas Grundsätzliches nicht verstehe, also bitte ich um Geduld ;)
 

marc_book

Mitglied
Hallo,
könntest du bitte mal deinen Quellcode posten?
Hast du dort so etwas stehen? Class.forName("com.mysql.jdbc.Driver");
 
Zuletzt bearbeitet:

loixl

Mitglied
Die Methode, die die Datenbank anspricht, beginnt so:
Java:
public static FRAGEREIHE fragereiheErstellen(int reihenlänge)
    {
        try
        {
            String adresse = "jdbc:mysql://"+host+"/"+db_name;
            Connection conn = DriverManager.getConnection(adresse, user, pw);
            Statement stmt = conn.createStatement();
            
            ResultSet rs;
Ansonsten gibt es keine Initialisierung..
 

loixl

Mitglied
Das wollte der Compiler nicht. Ich musste eine try-catch-Struktur ergänzen:
Java:
try
{
    Class.forName("com.mysql.jdbc.Driver");
}
catch(Exception e)
{
    return null;
}
Der Rest der Methode ist übrigens ähnlich und hört auf mit:
Java:
catch (java.sql.SQLException e)
{
    return null;
}
Es wird nichts returnt (auch nicht null), also hängt es sich irgendwo auf.
 
Zuletzt bearbeitet:

marc_book

Mitglied
Versuchs mal so:
Java:
try {
			Class.forName("com.mysql.jdbc.Driver");
			Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/whatever", "user", "pw");
			PreparedStatement statement = conn.prepareStatement("SELECT * from tabellenname");
			ResultSet result = statement.executeQuery();
			
			while (result.next()) {
				System.out.println(result.getString(1));
			}
			
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

Bist du dir sicher, dass du den Connector zu Buildpath hinzugefügt hast?
 
Zuletzt bearbeitet:

loixl

Mitglied
Ich weiß, so habe ich es schon probiert. Der Compiler-Error (bei dir in Zeile 2) lautet:
Code:
error: unreported exception ClassNotFoundException; must be caught or declared to be thrown

Den Connector habe ich richtig hinzugefügt (denke ich):
WuQBQf8.jpg
 
Zuletzt bearbeitet:

loixl

Mitglied
Immer noch das gleiche Problem, sehr komisch irgendwie.

Mit diesem Code teste ich:
Java:
@Override public void actionPerformed(ActionEvent evt)
{
    String cmd = evt.getActionCommand();

    if (cmd.equals("neuesSpiel"))
    {
        fenster.pktLabelSetzen("Button ausgelöst");

        if (SQL_SCHNITTSTELLE.fragereiheErstellen(10) == null)
        {
            fenster.pktLabelSetzen("null returnt");
        }
        else
        {
            fenster.pktLabelSetzen("nicht null returnt");
        }
Das Programm erreicht hier Zeile 7, weil im pktLabel "Button ausgelöst" steht. Ansonsten passiert aber nichts, also wird von der fragereiheErstellen-Methode weder null noch irgendwas anderes returnt.

Java:
public static FRAGEREIHE fragereiheErstellen(int reihenlänge)
{
    try
    {
        Class.forName("com.mysql.jdbc.Driver");
        String adresse = "jdbc:mysql://"+host+"/"+db_name;
        Connection conn = DriverManager.getConnection(adresse, user, pw);
        Statement stmt = conn.createStatement();

        ResultSet rs;

        //Hier kommt die SQL-Abfrage und ich erstelle aus dem ResultSet die FRAGEREIHE-Instanz reihe

        conn.close();

        return reihe;
    }
    catch (Exception e)
    {
        return null;
    }
}
 
Zuletzt bearbeitet:
Ähnliche Java Themen

Ähnliche Java Themen

Neue Themen


Oben