# Wieder mal ne Frage ...



## Xandro (9. Feb 2004)

Also ich habe nun mein Applet soweit fertiggestellt ... jedenfalls hab ich die Oberfläche ...

Nun habe ich auch eine Datenbank auf einem öffentlichen Server, für den ich Gebühren bezahle.
Generell ist mir die Verbinungsherstellung ja bekannt, mit Treiber laden usw...
Nur frage ich mich immer wieder wie das mit diesem Treiber aussieht,
da alle vom mysql-connector reden, ich aber nicht wirklich dahintersteige wie ich den nutze
oder ob ich den überhaupt benötige...
Wird der nun vom Applet selbst verwendet oder muss der auf den Server gespielt werden?

Sorry wegen der doofen Frage, aba das is mein Knackpunkt in Sachen JDBC ...

und dann die Frage ob ich die Datenbankanbindung überhaupt auf einem öffentlichen Server
verwenden kann oder selber einen bereitstellen muss ...

Wäre über eine Aufklärung dankbar, die auch ich verstehen kann *g*


----------



## sigma (10. Feb 2004)

das applet liegt ja auch auf dem server, daher musst du die mysql-connector library auch auf den server legen. wichtig ist, ob der server auch java unterschüzt. am besten fragst du mal beim server nach. 

hier kannst du connector/j herunterladen
http://www.mysql.com/downloads/index.html
und hier hast du die doku
http://www.mysql.com/documentation/connector-j/index.html

wenn du willst kannst du auch den server auf deinem rechner laufen lassen. jedoch brauchst du eine statische ip oder du machst es mit dyndns.

ich hoffe ich konnte dir helfen :?: 

gruss sigma


----------



## AlArenal (10. Feb 2004)

sigma hat gesagt.:
			
		

> das applet liegt ja auch auf dem server, daher musst du die mysql-connector library auch auf den server legen. wichtig ist, ob der server auch java unterschüzt. am besten fragst du mal beim server nach.



Das ist falsch.
Wo das Applet liegt ist egal, denn ausgeführt wird es auf dem Client und dort wird der Treiber benötigt. Daher ist die einzig sinnvolle Lösung ihn in das Applet mit reinzustopfen. Ob der Server Java unterstützt ist für Applets völlig egal.


----------



## AlArenal (10. Feb 2004)

Xandro hat gesagt.:
			
		

> und dann die Frage ob ich die Datenbankanbindung überhaupt auf einem öffentlichen Server
> verwenden kann oder selber einen bereitstellen muss ...



Das hängt von den Rechten ab. In der Regel ist bei Providern kein externer Zugriff auf die Datenbank erlaubt - ist eine Sicherheitseinstellung. Erst wenn du irgendwo deine eigene Maschine hast (bei Strato z.B. ab 39 Euronen pro Monat), kannst du den DB-Port selbst freiknipsen, deine DB-Zugiffsrechte entsprechend setzen und dann auch via Applet auf die DB zugreifen.


----------



## Xandro (10. Feb 2004)

also zu der DB kann ich nur sagen,
dass ich mit den listen arbeiten kann:
neue hinzufügen, bearbeiten sowie entfernen.
zugriff auf die DB bekomme ich ja mit phpadmin.
aber ob mir das reicht wollt ich mal wissen...

und mit dem connector in das applet reinstopfen ...
ich hoffe mal unter dem download der mysql-connector library
ist eine faq vorhanden, die mir das einigermaßen erläutert...


----------



## Roar (10. Feb 2004)

AlArenal hat gesagt.:
			
		

> Xandro hat gesagt.:
> 
> 
> 
> ...


also das weiß ich nicht  :? bei meinem provider kann ich von meinem pc aus mit java auf die mysql datenbank zugreifen  ???:L


----------



## AlArenal (10. Feb 2004)

Roar hat gesagt.:
			
		

> bei meinem provider kann ich von meinem pc aus mit java auf die mysql datenbank zugreifen  ???:L



Ist das eine Frage oder eine Feststellung?

PHPMyAdmin läuft ja bei deinem Provider, der Zugriff ist also lokal. Das sagt nichts über externe Zugriffsmöglichkeiten.



> und mit dem connector in das applet reinstopfen ...
> ich hoffe mal unter dem download der mysql-connector library
> ist eine faq vorhanden, die mir das einigermaßen erläutert...



Das .jar entpacken, die Sourcen daraus löschen und den Rest dem eigenen Projekt hinzufügen.


----------



## Xandro (10. Feb 2004)

> Das .jar entpacken, die Sourcen daraus löschen und den Rest dem eigenen Projekt hinzufügen.



DAS musste mir jetzt mal genauer erklären ...
ich soll die Sourcen - welche? - löschen und den Rest importieren...
hmm .. ich hab einfach mal versucht das .jar-file zu entpacken und den rest irgendwie einzubinden.
aber das sind ja mindestens 30 klassen, die im paket enthalten sind.
sollen die ALLE mit in mein Projekt integriert werden?


----------



## AlArenal (10. Feb 2004)

In der Regel braucht man nicht alle, aber jede einzeln rauszupicken isst ja auch doof 

Was sind schon 200 KB?


----------



## Xandro (19. Feb 2004)

Neue Frage *g*

hab hier mal meinen Verbindungsaufbau:


```
void button_add_add_actionPerformed(ActionEvent e) {
    Connection dbconn = null;
    Statement statement = null;
    String kdnr = txt_add_kdnr.getText();
    String firma = txt_add_firma.getText();
    String strasse = txt_add_strasse.getText();
    String plz = txt_add_plz.getText();
    String ort = txt_add_ort.getText();
    String tel = txt_add_tel.getText();

    try{
      Class.forName("org.gjt.mm.mysql.Driver");
    }
    catch (ClassNotFoundException driver){
      JOptionPane.showMessageDialog(null,"Fehler beim Laden","Treiber konnte nicht geladen werden!",JOptionPane.ERROR_MESSAGE);
    }

    try{
    dbconn = DriverManager.getConnection("jdbc:mysql://localhost:port","dbname","passwort");
    }
    catch(SQLException getconn){
      JOptionPane.showMessageDialog(null,"Verbindungsfehler","Verbindung konnte nicht aufgebaut werden!",JOptionPane.ERROR_MESSAGE);
    }

    try{
      statement = dbconn.createStatement();
      statement.execute("INSERT INTO kd ("kdnr","firma","strasse","plz","ort","tel") VALUES ("+kdnr+","+firma+","+strasse+","+plz+","+ort+","+tel+")");
      dbconn.commit();
    }
    catch(Exception add){
      JOptionPane.showMessageDialog(null,"Eintragsfehler","Daten konnten nicht hinzugefügt werden!",JOptionPane.ERROR_MESSAGE);
    }

    if (dbconn != null){
      try{
        dbconn.close();
      }
      catch(SQLException closeconn){
        JOptionPane.showMessageDialog(null,"Verbindungsfehler","Verbindung konnte nicht beendet werden!",JOptionPane.ERROR_MESSAGE);
      }
    }
}
```

ich wollte mal wissen ob das mit den auslesen der textfelder so funktionieren könnte.
oder ob hier ein genereller fehler vorliegt, da sich überhaupt nix tut wenn ich die textfelder ausfülle und senden will.
man hat mir mitgeteilt, dass die Error-Message-Dialogs akzeptabel wären ...


----------



## AlArenal (19. Feb 2004)

> ```
> statement.execute("INSERT INTO kd ("kdnr","firma","strasse","plz","ort","tel") VALUES ("+kdnr+","+firma+","+strasse+","+plz+","+ort+","+tel+")");
> ```



Ich kann mir irgendwie nicht so recht vorstellen, dass Java und die Datenbank die Feldnamen in doppelten Hochkommas annehmen... Für sowas gibt es einfache Hochkommas, dann kommt man auch mit den Stringbegrenzern von Java nicht durcheinander. Einfache Hochkommas braucht man auch um Werte für VARCHAR und TEXT zu umschließen, denn die DB kann ja nicht wissen ob ein Komma nun zum Text gehört oder als Trennzeichen für die DB gedacht ist.


----------



## Xandro (19. Feb 2004)

hmm ok dann nehm ich halt Apostrophierungen (Hochkommata) ...
und ansonsten könnte es so klappen wie oben geschrieben?
weil ich mir nunmal nicht sicher war, wegen der .getText()-Stringsache,
ob man die einfach so implementieren kann.


----------



## AlArenal (19. Feb 2004)

Sorry, aber ich bin kein menschlicher Java-Compiler. Was hältst du vom Ausprobieren?


----------



## Xandro (20. Feb 2004)

hehe ... jaja ok, hast ja recht ...

najo ich probier's ja die ganze zeit aus.
hab das applet auf den server geladen und ich denke alles soweit korrekt eingestellt.
jedoch findet sich nix in meiner table wieder,
auch wenn ich den button klicke *g*

und ausserdem kommt keine Exception,
was mich nochmehr irritiert,
denn eigentlich kommt ja IMMER eine Exception,
wenn die Ausführung des Befehls misslungen ist.


----------



## bummerland (20. Feb 2004)

Xandro hat gesagt.:
			
		

> hmm ok dann nehm ich halt Apostrophierungen (Hochkommata) ...
> und ansonsten könnte es so klappen wie oben geschrieben?
> weil ich mir nunmal nicht sicher war, wegen der .getText()-Stringsache,
> ob man die einfach so implementieren kann.



ich hab jetzt zwar nicht alles gelesen, aber wenn die db mysql ist, kannst du die spaltennamen komplett ohne anführungsstriche in das statement schreiben. die values müssen, wenn die strings sind, in einfache hochkommas geschrieben werden, zahlen dagegen nicht. Also so: 
	
	
	
	





```
statement.execute("INSERT INTO kd (kdnr, firma, strasse, plz, ort, tel) VALUES ('"+kdnr+"', '"+firma+"','"+strasse+"','"+plz+"','"+ort+"','"+tel+"')");
```
 (Angenommen, alle Werte sind Strings.)


----------



## Xandro (20. Feb 2004)

oki danke erstmal,
werd mich mal weiter dran versuchen


----------

