[TUT]MySql und Java

Status
Nicht offen für weitere Antworten.

Matt

Aktives Mitglied
[SIZE=+1]Voraussetzungen[/SIZE]
Ihr benötigt:
So denn gehen wir davon aus, das ihr es geschafft habt Xampp zu installieren und auch Eclipse zu entpacken, und den JDBC von MySQL zu downloaden und eine Datenbank einzurichten

Mit dem runtergeladenen Treiber machen wir nun folgendes:
Wenn wir das runtergeladene Archiv entpacken finden wir folgendes:

  • Verzeichnis - src
  • Verzeichnis - docs
  • mysql-connector-java-5.1.7-bin.jar
  • und einige andere Dateien die für uns momentan sehr sehr unwichtig sind...

Nun machen wir folgendes:
  • Wir erstellen in unserem Projektverzeichnis ein Unterverzeichnis mit der bezeichnung lib und kopieren die mysql-connector-java-5.1.7-bin.jar da rein.
Beispiel:

  • Projektverzeichnis
    • src (existiert schon)
    • bin (existiert schon)
    • lib (muss erstellt werden)

Also wir haben die mysql-connector-java-5.1.7-bin.jar in das libs Verzeichnis unseres Projekts kopiert, damit ist diese aber noch nicht gänzlich in unser Projekt eingebunden.

Wir müssen unserem Projekt noch sagen, das dieses Jar existiert und er darauf zugreifen kann, sofern es nötig ist. Daher öffnen wir nun unser Eclipse und unser Projekt. Wir machen nun ein Rechtsklick auf unser Projekt, welches im Projekt-Explorer nun dargestellt wird und wählen Properties aus.

Was nun kommt werde ich anhand eines Bildes verdeutlichen:
libs-jar.jpg


Wir erkennen gut das unter dem Punkt "Java Build Path", den Panelreiter Libaries auswählen müssen. Darauffolgend klicken wir auf "Add JARs" und ein kleines Fenster öffnet sich mal wieder. Dort sollten wir nun alle Archive entdecken, die sich in unserem "libs"-Verzeichnis befinden (egal ob .jar oder .zip).

Ausgewählt und mit OK bestätigt sehen wir unser Ergebnis und es ist zufriedenstellend.

Alles weitere ist Code.
Wie könnte so ein Code aussehen?

Ales erstes müssen wichtige Libs importieret werden:
[highlight="Java"]import java.io.*;
import java.sql.*; [/highlight]

Dann deklarieren wir eine Variable treiber vom Datentyp String und initialisieren sie mit dem Pfad unseres jdbc-Treibers. Darauf nutzen wir auch gleich unsere Variable bzw. den Treiber und Laden diesen.

[highlight="Java"]
String treiber;
treiber = "com.mysql.jdbc.Driver" ;
Class.forName( treiber ).newInstance();[/highlight]

Soweit sogut.
Nun müssen wir eine Verbindung zu Datenbank aufbauen. Dazu deklarieren wir eine Referenz vom Datentyp Connection.
[highlight="Java"]
Connection conn;[/highlight]

Im folgenden erstellen wir wieder eine Variable, hier temp, welche die Adresse unserer Datenbank lagert. Dabei sind nicht nur URL unseres Server wichtig sondern auch die zu benutzen Protokolle. Hier "jdbc:mysql://". Die eigentliche URL die in dem String "dbURL" steht wird einfach drangehängt. Zusätzlich kommt auch der Name der Datenbank ans ende vom String, der ebenfalls in einem String "dbname" steht.
Darunter geschieht das eigentliche für den Verbindungsaufruf. Wir benutzen die Referenz "DriverManager" und die dazugehörige Methode und eine Verbindung zu unserer Datenbank aufzubauen. Beim Aufruf benötigen wir auch einige Parameter. Einmal die temp variable wo unsere Adresse zum Server steht. Einen Benutzernamen für den MySQL Server und evtl. auch ein Passwort.
Die Informationen der Verbindung werden dann in der Referenz "conn", welche wir zuvor erstellet haben, gespeichert.

[highlight="Java"]
String temp = "jdbc:mysql://"+dburl+"/"+dbname;
conn = DriverManager.getConnection(temp, usrname, password);[/highlight]

Nun haben wir eine Verbindung zum MySQL-Server und können diesen ansprechen. Dies könnte z.B. so aussehen.

[highlight="Java"]public ResultSet getQuery(String sqlquery) throws SQLException{
Statement st = conn.createStatement();
ResultSet rs = st.executeQuery( sqlquery );
return rs;
}[/highlight]
Was genau haben wir getan?
Wir erstellen eine Referenz st (Typ Statement) und das mithilfe unseren Verbindungsinformationen. Die Referenz "conn" besitzt eine Methode "createStatement" welches unser st passend initialisiert und SQL Statements über unsere Verbindung laufen.
So geschieht es auch im nächsten Schritt, das wir zu erst eine Referenz rs (Typ ResultSet) deklarieren und diese Initialisieren mit dem Ergebnis eines SQL-Statements. Beispiel: Wir haben ein SELECT - Statement, so wird nun in rs, das Ergebnis vom SELECT gespeichert.

Da die Beispiels Funktion so aufgebaut ist das sie ein ResultSet zurück gibt, können wir im folgenden Abschnitt sehen, was man nun mit so einen Ergebnis nun machen "könnte".

[highlight="Java"]ResultSet rs = getQuery("select * from usr;");
while(rs.next()){
String Zeile = (rs.getString("name"));
System.out.println(bla);
}[/highlight]
Was haben wir getan?
Wir erstellen wieder eine Referenz rs, welches unser Ergebnis eines Select-Statements annehmen und speichern soll. Folgend gehen wir in eine while-schleife, die solange immer die nächste Zeile unseres Ergebnisses durch gehen soll bis es alle Zeilen durchgegangen ist. In der Schleife selber, erstellen wir eine Variable Zeile (Typ String)(Anmerkung: kann auch vor der Schleife geschehen), welches den Inhalt unseres ResultSets "an der Aktuellen" Position auslesen soll. In Klammer steht da nun "name", was bedeutet das nur die Spalte mit der Bezeichnung "name" ausgelesen werden soll. Danach geben wir das Ausgelesene aus und fangen wieder am Schleifenkopf an, solange bis wir die letzte Zeile erreicht haben.

Ich hoffe euch war dieser minimale Einstieg eine Hilfe.

MfG
Matt

hier ist ein Link zu einer Vorlage:

Im Archiv DB-Klasse Kopie.rar findet ihr folgendes:

  • Eine Klasse "ClassDBMySql" welche die Methoden behandelt, um mit einer Datenbank zu hantiere
  • Eine Klasse "cmain" zum Testen der ClassDBMySql
  • Ein Verzeichnis "libs" in welcher die "mysql-connector-java-5.1.7-bin.jar" findet
In dem Oberen sollte sogar eine javadoc dabei sein, bei dem zweiten Archiv sollte keine dabei sein. Aber kann man sich ja selber anlegen.
 

Ebenius

Top Contributor
In dem Beitrag ist mir etwas viel Prosa.

Ich mag hier mal nen kleines Beispiel erstellen, wie das mit einer mySQL DB aussehen kann.
Dafür hab ich mal eben zwei Bilder erstellt. Ich entschuldige mich für die größe ^^, hoffe niemand gimpt mit nem Modem rum und fühlt sich genervt wegen den Bildern...

So dele, wie schon vorangegangene Personen erwähnt brauch man einige voraussetzungen, um via Java auf eine MySQL Datenbank zu zugreifen ^^. Bis vorkurzem hatte ich auch nicht soviel Plan davon, bis ich mir mal wirklich Zeit genommen hab, mich damit aktiv zu beschäftigen und auch mir persönlich Klassen etc. als Vorlage für andere Projekte zu erstellen.

Am ende des Posts werde ich auch auch zwei Links anhängen, wo man eine ältere Version meiner Datenbanken Klassen findet. ^^

Zu den Vorrausetzung, Ihr benötigt folgendes:
Würde ich komplett ersetzen durch:
[SIZE="+1"]Voraussetzungen[/SIZE]
Ihr benötigt:

Die Bilder der Explorer-Fenster würde ich komplett einsparen und durch sowas ersetzen:
Verzechnisstruktur:
Code:
[Programmverzeichnis]
  + [src]
  + [lib]
     + mysql.trallalala.jar
Wieso verweist Eclipse auf Sun Deutschland?

Ebenius
 
M

maki

Gast
Würde persönlich auch die nicht empfohlenen Methoden weglassen.
Kurz & knackig eben, ohne zu verwirren, ist aber nur meine subjektive Meinung ;)
 

Ebenius

Top Contributor
In Eclipse ist es IMHO besser, mit User Libraries zu arbeiten, als die external JARs in jedem Projekt neu zu verknüpfen.

Ebenius
 

tfa

Top Contributor
Die "bösen" Methoden sollten wirklich weglassen werden. Nachher kommt wirklich jemand auf die Idee, das so machen zu wollen.
Vielleicht kann man noch ein oder zwei "^^", "xD" oder "*rofls*" weglassen, um Leute, die älter sind als 14, nicht zu verwirren :)
 

Matt

Aktives Mitglied
Ohje ^^ also nochmal komplett runter rattern :) aber danke für die Hinweise ^^ werd schauen das ich des in den kommenden stunden mache ^^
 

Ebenius

Top Contributor
Bilder sagen mehr als Worte. So wird das Ganze anschaulicher, man erkennt schneller worum es geht. Der Beitrag wirkt dann auch nicht so trocken, Bilder würden ihn entsprechend auflockern.
Grundsätzlich halte ich viel von Bildern. Allerdings sind die überfrachteten Explorerfenster-Schirmschüsse
  1. nicht dafür geeignet eine Verzeichnisstruktur darzulegen
  2. unübersichtlich weil um Längen zu bunt und mit viel zu viel Unwichtigkeiten gefüllt
  3. unnütz und verwirrend für jeden, der kein M$-Windows benutzt
Also bitte keine Screenshots für Verzeichnisstrukturen!

Ebenius
 

Matt

Aktives Mitglied
Ich hab es nun estwas überarbeitet - hoffe das wirkt nun etwas ansprechender...sollte noch mehr sein ich bin offen für alles :)


Matt
 

Ebenius

Top Contributor
Verzeichnisname "libs" sollte lieber "lib" heißen. "src" heißt ja auch nicht "srcs". Und "bin" heißt auch nicht "bins".

Ich verstehe noch immer den Link zu Eclipse nicht. Eclipse ist nicht von Sun. Die Eclipse-Homepage findet man hier: Eclipse.org home

Ebenius
 

Matt

Aktives Mitglied
Verzeichnisname "libs" sollte lieber "lib" heißen. "src" heißt ja auch nicht "srcs". Und "bin" heißt auch nicht "bins".

Ich verstehe noch immer den Link zu Eclipse nicht. Eclipse ist nicht von Sun. Die Eclipse-Homepage findet man hier: Eclipse.org home

Ebenius

I'am Sorry xD auch diese Grobe Kante hab ich rausgebügelt. Heute hab ich wohl nen verwirrten tag....

so Far

Matt
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Oben