Datenbankabfrage mit Applet

Status
Nicht offen für weitere Antworten.

schlaubi

Mitglied
Hallo liebe Javagemeinde,

kleines Vorwort:

Ich habe mich 2005 näher mit Java beschäftigt und war eigentlich auch schon recht fit was einfach Sachen anging. Damals habe ich allerdings alles nur als Applikation laufen lassen. Wie ich jetzt merke, ist in den 4 Jahren, die ich garnichts mit Java gemacht habe sehr viel verloren gegangen.

nun zu meinem Problem:

Ich möchte ein Applet machen, mit dem ich nach Eingabe von Username und Passwort auf eine MySql Datenbank zugreifen kann um dort entsprechende Abfragen zu starten. Das eigentliche Applet mit den Eingabefeldern und dem Eventhandler ist auch kein Problem. Mein Problem ist die Verbindung zu Datenbank und die daraus resultierende Abfrage.

Ich habe also in mein Applet folgendes eingebaut:

[HIGHLIGHT="Java"] public static synchronized Connection holeVerbindung(String RechnerName,String dbName,String userName, String passwort)
throws Exception {
System.out.println("methode hole verbindung");
if (dieConnection == null) {
Class.forName( "org.gjt.mm.mysql.Driver" );
String connectionURL ="jdbc:mysql://localhost:3306/"+dbName;
System.out.println("connection url");
Connection result = DriverManager.getConnection(connectionURL, userName, passwort);
System.out.println("connection result");
return result;
} else {
Connection conn = dieConnection;
dieConnection = null;
return conn;
}
}[/HIGHLIGHT]


Wenn ich nun auf die Methode zugreife bekommen ich die Meldung:

Exception in thread "AWT-EventQueue-1" java.lang.ClassFormatError: Duplicate method name&signature in class file com/mysql/jdbc/Connection
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$000(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:400)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at Test.holeVerbindung(Test.java:166)
at Test.loginClicked(Test.java:155)
at Test.handleEvent(Test.java:114)
at java.awt.Component.postEvent(Unknown Source)
at java.awt.Component.postEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)

Viele von euch werden jetzt vieleicht sagen, "ist doch alles klar, der Fehler steht doch da". Ich habe aber irgendwie ein Brett vor´m Kopf. Für einen Tip oder eine einfachere Möglichkeit zum Ziel zu kommen, wäre ich sehr dankbar.
 
Zuletzt bearbeitet von einem Moderator:

schlaubi

Mitglied
hi, leider nein. beim ablauf wird das programm bis einschließlich

String connectionURL ="jdbc:mysql://localhost:3306/"+dbName;

alles abgearbeitet und beim nächsten Punkt tritt der Fehler auf. Habe schon gedacht, dass es an der Nichterreichbarkeit der DB liegt aber dann sollte normal eine andere Meldung kommen.
 
G

Gast2

Gast
Moin,

String connectionURL ="jdbc:mysql://localhost:3306/"+dbName;

wenn Du versuchst mit dem Applet auf die lokalen DB zuzugreifen wird das nicht funktionieren ... ein Applet darf nur eine Netzwerkkommunikation zum Server herstellen ... wenn Du genau das möchtest ist localhost die falsche Server-Adresse ... mal abgesehen davon lausch der MySQL-Server ebenfalls nur auf localhost ... Du musst ihm also in der Config noch beibringen auf 0.0.0.0 bzw. einer anderen IP zu lauschen.
 
G

Gast2

Gast
Moin,

Nicht, wenn er bspw. einen Apache auf seiner Kiste laufen hat.
wenn er auf 192.168.0.3 den Apache hat und sich vom dem das Applet ausliefern lässt ... darf das Applet nur 192.168.0.3 via Netzwerk zugreifen ... es ist quasi egal ob Apache oder welcher Server auch immer ... will er immer auf die lokale Datenbank zugreifen, dann machen sich MySQL-Tools besser :)

Wird das nicht mit der Portnummer unterschieden?
nicht das ich wüsste ... die Portnummer ist 3306 ... auf meinem Root-Server musste ich ihm erstmal sagen "nimm 0.0.0.0" und mit der Firewall alles aus dem Internet blocken (Rest läuft via OpenVPN)

hand, mogel
 

schlaubi

Mitglied
hallo,

danke für die Antworten.

Die Klasse heitß im moment einfach nur Test. Es ist so, dass das ganze im Endergebnis auf einer Linux Maschine liegt, auf welcher dann auch ein Apache läuft.

@mogel, ich kann dir nicht ganz folgen. Du meinst ich soll nicht localhost angeben sondern die volle IP? Was meinst Du mit einem MySql Tool - phpmyadmin o.ä.? Die Datenbankabfragen sollen ja aus dem Programm heraus geschehen.
 
G

Gast2

Gast
Moin,

wenn Du jetzt 2 Rechner hast ... Server (Datenbank/Apache/Applet) und Client (Browser/Java) ... wirst Du vom Client aus nicht auf die DB zugreifen können wenn Du dem Applet sagst das die DB auf 'localhost' liegt ... macht sie ja nicht ... liegt die DB doch auf 'localhost' - dann versuch mal Dein Glück mit dem MySQL GUI Tools

ansonsten poste mal bitte Deine Server/Client Konstallation

hand, mogel
 

Ebenius

Top Contributor
wenn Du versuchst mit dem Applet auf die lokalen DB zuzugreifen wird das nicht funktionieren ... ein Applet darf nur eine Netzwerkkommunikation zum Server herstellen ...
Wollte nur mal noch erwähnen, dass signierte Applets in der Regel zu jedem Host Netzwerkverbindungen öffnen können.

Ebenius
 

L-ectron-X

Gesperrter Benutzer
Normalerweise muss das Applet auch beim Einsatz mit einer Datenbank signiert werden, meines Wissens gehts auch gar nicht anders.
 

schlaubi

Mitglied
Hallo und Danke für die Anmerkungen.

Ich gebe mal mehr Informationen preis . Es soll ein kleines Applet werden mit dem ich auf eine Datenbank zugreifen kann ( über login mit user id und Passwort) um mir dann gespeicherte Informationen abzurufen. Im Moment sieht meine Klasse wie folgt aus:

[HIGHLIGHT="Java"]import java.awt.*;
import java.applet.*;
import java.awt.Button;
import java.awt.Graphics;
import java.awt.Font;
import java.awt.Label;
import java.awt.TextArea;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.sql.Connection;
import java.sql.DriverManager;

public class Test extends Applet {

public static Connection dieConnection=null;
String dbName = "konsole";
String dbPasswort = "konsole";
String userName = "konsole";
String RechnerName = "localhost";

Label labSuche1, labSuche2, labSuche3;
Label labText1, labText2;

TextField tfId, tfPasswort, tfPlz;

Button bInfo, bAbbrechen, bLogin;

TextArea taInfo;

Font fntFett, fntHead, fntAusgabe;

public void init(){
setLayout(null);

fntFett = new Font("SansSerif", 1, 14);
fntHead = new Font("SansSerif", 1, 20);
fntAusgabe = new Font("Monospaced",0, 12);

labText1 = new Label ("Datenbankzugriff");
labText1.setBounds(20,25,600,25);
labText1.setFont(fntHead);
add(labText1);

labText2 = new Label ("");
labText2.setBounds(20,70,80,25);
labText2.setFont(fntFett);
add(labText2);

labSuche1 = new Label("ID");
labSuche1.setBounds(100,70,200,25);
labSuche1.setFont(fntHead);
add(labSuche1);

labSuche2 = new Label ("Passwort");
labSuche2.setBounds(350,70,100,25);
labSuche2.setFont(fntHead);
add(labSuche2);

labSuche3 = new Label ("PLZ");
labSuche3.setBounds(500,70,100,25);
labSuche3.setFont(fntHead);
add(labSuche3);

tfId=new TextField("");
tfId.setBounds(100,110,160,25);
tfId.setFont(fntFett);
add(tfId);

tfPasswort=new TextField("");
tfPasswort.setBounds(350,110,100,25);
tfPasswort.setFont(fntFett);
add(tfPasswort);

tfPlz=new TextField("");
tfPlz.setBounds(500,110,100,25);
tfPlz.setFont(fntFett);
add(tfPlz);

bAbbrechen=new Button("Abbrechen");
bAbbrechen.setBounds(150,160,80,25);
bAbbrechen.setFont(fntFett);
add(bAbbrechen);

bInfo=new Button("Info");
bInfo.setBounds(300,160,100,25);
bInfo.setFont(fntFett);
add(bInfo);

bLogin=new Button("Login");
bLogin.setBounds(450,160,100,25);
bLogin.setFont(fntFett);
add(bLogin);

taInfo=new TextArea();
taInfo.setBounds(20,210,600,400);
taInfo.setFont(fntAusgabe);
add(taInfo);


}


public boolean handleEvent (Event e){
if (e.target == bInfo && e.id == Event.ACTION_EVENT){
infoClicked();
}

if (e.target == bAbbrechen && e.id == Event.ACTION_EVENT){
abbrechenClicked();
}

if (e.target == bLogin && e.id == Event.ACTION_EVENT){
try {
loginClicked();
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}

return false;

}
/*
public void actionPerformed(ActionEvent e){
if (e.getSource() == bInfo){
infoClicked();
}
if (e.getSource() == bAbbrechen){
abbrechenClicked();
}
if (e.getSource() == bLogin){
loginClicked();
}


}*/

private void infoClicked() {

taInfo.append("Info Feld\n");

}

private void abbrechenClicked() {
taInfo.append("Abbrechen angeklickt\n");

}

private void loginClicked() throws Exception {
System.out.println("methode login");
taInfo.append("Login angeklickt\n");
holeVerbindung ( RechnerName, dbName, userName, dbPasswort);

}
public static synchronized Connection holeVerbindung(String RechnerName,String dbName,String userName, String passwort)
throws Exception {
System.out.println("methode hole verbindung");
if (dieConnection == null) {
Class.forName( "org.gjt.mm.mysql.Driver" );
String connectionURL ="jdbc:mysql://localhost:3306/"+"konsole";
System.out.println("connection url");
Connection result = DriverManager.getConnection(connectionURL, userName, passwort);
System.out.println("connection result");
return result;
} else {
Connection conn = dieConnection;
dieConnection = null;
return conn;
}
}

}[/HIGHLIGHT]


und beim Login bekomme ich besagten Fehler. Steht momentan ein wenig mehr drin als gebraucht wird aber das sind die "Schnipsel" von meinem rumtesten.
 
Zuletzt bearbeitet von einem Moderator:

L-ectron-X

Gesperrter Benutzer
Also die Fehlermeldung

java.lang.ClassFormatError: Duplicate method name&signature in class file com/mysql/jdbc/Connection

deutet in erster Linie auf eine nicht lesbare, kaputte oder nicht als Class-Datei erkannte Bytecode-Datei.

Was mich aber eigentlich irritiert ist das Anhängsel: Duplicate method name&signature in class file com/mysql/jdbc/Connection

Scheinbar gibts eine gleiche Methode, also ein Namenskonflikt.

Versuche mal, die Connection-Klasse, die du benutzt mit Paket anzugeben und dann neu zu kompilieren/auszuführen.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
P Datenbankabfrage MYSQL aus Applet heraus Datenbankprogrammierung 6
L Datenbankabfrage mit loop Datenbankprogrammierung 17
N MySQL Datenbankabfrage oder Arraylist? Datenbankprogrammierung 2
J Datenbankabfrage / Teilmengen Datenbankprogrammierung 2
S MySQL JTable zeigt nach Datenbankabfrage eine Spalte zu viel an Datenbankprogrammierung 0
S MySQL Datenbankabfrage mit Eingabe aus Textfeld vergleichen Datenbankprogrammierung 4
C Modellierung Datenbankabfrage Datenbankprogrammierung 1
W SQL-Statement Datenbankabfrage über Yahoo Datenbankprogrammierung 0
B Fehlerhafte Datenbankabfrage Datenbankprogrammierung 3
H Oracle Datenbankabfrage ausgeben Datenbankprogrammierung 13
E MySQL Anzeige Datenbankabfrage in Textfeld o.ä. Datenbankprogrammierung 34
L Datenbankabfrage mit einer Range Datenbankprogrammierung 3
Y JDBC - Datenbankabfrage Webserver Datenbankprogrammierung 4
E H2 - Datenbankabfrage gibt NULL aus? Datenbankprogrammierung 4
H Einfache Datenbankabfrage Datenbankprogrammierung 14
S ResultSet einer Datenbankabfrage - Nullpointer Exception Datenbankprogrammierung 13
F Problem mit Datenbankabfrage Datenbankprogrammierung 7
M Problem bei einfacher Datenbankabfrage Datenbankprogrammierung 7
W Problem mit Datenbankabfrage Datenbankprogrammierung 3
A Datenbankabfrage mit KeyListener Datenbankprogrammierung 5
C Rückgabetyp einer Datenbankabfrage Datenbankprogrammierung 12
V Datenbankabfrage in einem Textfeld ausgeben Datenbankprogrammierung 3
L einfache Datenbankabfrage ohne erstes Element Datenbankprogrammierung 2
E Nochmal eine Datenbankabfrage Frage :-o (JOIN oder so) Datenbankprogrammierung 4
R NUllPointerException bei Datenbankabfrage Datenbankprogrammierung 4
A SQL Datenbankabfrage in Array speichern Datenbankprogrammierung 3
D Datenbankabfrage will nicht funktionieren Datenbankprogrammierung 5
C vergleichende Datenbankabfrage Datenbankprogrammierung 5
G datenbankabfrage Datenbankprogrammierung 4
A datenbankabfrage in sql mit java Datenbankprogrammierung 32
T Nochmal Datenbankabfrage Datenbankprogrammierung 6
D MySQL Applet MYSQL Abfragen Sicherheit Datenbankprogrammierung 2
S Applet stucks at SQL Connection (jTDS JDBC) Datenbankprogrammierung 15
D Oracle SQL Ergebnis anzeigen und Applet Fehlermeldung Datenbankprogrammierung 12
D Datenbank Applet Datenbankprogrammierung 4
I Java (J)Applet und und RMI (momentan eher RMI) Datenbankprogrammierung 6
G Applet und MsAccess Datenbankprogrammierung 2
M Aus einem Applet eine Datenbankverbindung starten? Datenbankprogrammierung 26
S Problem mit JDBC und Applet Datenbankprogrammierung 3
T APPLET MYSQL JDBC zum 1001mal Datenbankprogrammierung 6
A Java-Applet -> MySQL Datenbank Datenbankprogrammierung 7
S Applet und Verbindung zur DB Datenbankprogrammierung 8
N Hilfe ! Mein Applet bekommt ein Access-Denied von MySQL Datenbankprogrammierung 7
M Sicherheit bei Applet auf MySQL Datenbank Datenbankprogrammierung 4
A MySQL+Webserver --(Java-Applet)----> Client Datenbankprogrammierung 11
G Access Zugriff, DB auf Server, Applet Datenbankprogrammierung 4
A Datenbankzugriff per Applet - Problem beim Treiber laden Datenbankprogrammierung 6
T Applet bekommt keinen Datenbankzugriff Datenbankprogrammierung 11
T Datenbankzugriff (Oracle) mit Applet via Internet? Datenbankprogrammierung 6
S Datenbankanbindung + HTML + Applet Datenbankprogrammierung 7
D Applet + MySQL Datenbankprogrammierung 9
L Problem DBVerbindung ausserhalb des Editors:z.B Applet,MSDOS Datenbankprogrammierung 4
M Mit Java Applet via HDBC auf MySQL DB zugreifen? Datenbankprogrammierung 2
S Datenbanktest ergibt graues Fenster bei Applet Datenbankprogrammierung 5
L Zugriff von Applet auf mysql-DB Datenbankprogrammierung 2
F Problem mit MySQL-Datenbank und Java-Applet Datenbankprogrammierung 2

Ähnliche Java Themen


Oben