Archiv für den Monat: November 2009

Java MySQL Tutorial

In Sachen Java und Datenbank bin ich ein totaler Neuling. Allerdings hält man sich ja gern fit in solchen Sachen und da wir hier firmenintern ein neues Desktop-Tool brauchen, bot sich Java an. Für mich die einzige Schwierigkeit: Die Verbindung von Java zur MySQL-Datenbank.

Lange habe ich gesucht, lange herumprobiert und getippt und gelesen und wieder getippt. Am Ende habe ich es dann geschafft, mit ganz einfachen Mitteln eine Verbindung herzustellen.

Die Anforderungen waren:

  • Connect zur MySQL Datenbank
  • Ausführen eines SELECT´s
  • Auswerten der Antwort
  • Schließen der Datenbank

Das ganze aber ohne Frameworks wie Hibernate oder sowas, sondern nur mit Bordmitteln, die Java mitliefert. Betrachtet man das Ergebnis, ist es doch sehr einfach, aber man muss es ja auch erstmal wissen. Ich will es euch nicht vorenthalten. Dazu habe ich mal eine Beispiel – Konsolen Anwendung mit NetBeans erstellt, der Code läßt sich aber problemlos in große Projekte übernehmen.

Schritt 0: Benötigte imports

Folgendes import wird benötigt

import java.sql.*;

Vor den ganzen Code setzt man noch folgende Merker:

Statement stmt;       
ResultSet rs;

Die Funktion von ResultSet und Statement erkläre ich später.

Schritt 1: Treiber einbinden

(Alles ab hier sollte in einen try…catch Block)
Den Treiber für MySQL muss man mit 2 Schritten einbinden, in Netbeans geht das ziemlich einfach.
a) Rechtsklick auf das Projekt, Properties, dann Libraries, dann bei „Compile“ und „Run“ die „MySQL JDBC Driver“ mit „Add Library“ auswählen und bestätigen.
b) Den Code

Class.forName("com.mysql.jdbc.Driver");

hinzufügen.

Schritt 2: Verbindung zur MySQL-Datenbank herstellen

Die Verbindung zur Datenbank wird wie folgt hergestellt


String url     = "jdbc:mysql://localhost:3306/meinDatenbankSchema";
Connection con = DriverManager.getConnection(url,"benutzername", "benutzerpasswort");
stmt = con.createStatement();

Zeile 1 definiert das Datenbankziel, Zeile 2 stellt die eigentliche Verbindung her. Nicht vergessen, die Daten für „meinDatenbankSchema„, „benutzername“ und „benutzerpasswort“ anzupassen.
Zeile 3 erzeugt ein sogenanntes „Statement“ Objekt, mit welchem wir Anfragen an die Datenbank stellen können (Querys).

Schritt 3: Querys zur Datenbank senden

SQL-Querys sendet man mit Hilfe des Statement-Objektes zur Datenbank und wertet das ganze mit dem ResultSet-Objekt wieder aus.
SELECT-Beispiel, absenden des SQL, return-typ ist ResultSet:

rs = stmt.executeQuery("SELECT vorname, nachname FROM users");

UPDATE-Beipiel, absenden des SQL, return-typ ist integer:

int anzahlZeilen = stmt.executeQuery("UPDATE users SET vorname = 'Harry' WHERE vorname='Larry' ");
Schritt 4: Auswerten eines SELECT Ergebnisses

Bei einer SELECT Anfrage bekommt man ein ResultSet Objekt zurück, dieses kann man wie folgt auswerten:

while (rs.next())       
{
    String  vorname = rs.getString("vorname");
    String  nachname = rs.getString("nachname");
    System.out.println("Vorname: "+vorname+" | Nachname: "+nachname);
}
Schritt 5: Auswerten eines UPDATE Ergebnisses

Einfach den integer auswerten, er gibt die Anzahl der sogenannten „betroffenen Zeilen“ an.

Schritt 6: Verbindung zur MySQL-Datenbank schließen

Geht ganz einfach und sollte in jedem Fall gemacht werden (im Gegensatz zu PHP, wo das leider noch ein kann ist, ist es bei Java ein muss).

con.close();

So, ich hoffe, ihr könnt damit was anfangen – im wahrsten Sinne des Wortes. Mir jedenfalls wird es sehr helfen, meine ersten Datenbankabhängigen Servlets, JSP’s oder Java-Anwendungen zu schreiben.

Offener Brief an das PHP-Journal

Hallo PHP-Journal Redaktion,

Gestern kam sie, die neue Ausgabe des PHP-Journal, das wir hier in unserer Firma abonniert haben. Ausgabe 6/2009, um genau zu sein.

Obwohl das PHP-Journal schon immer eine lustige Zeitung war, verschlug es uns gestern wirklich die Sprache.
Besonders die Kategorie “Know-how für PHP-Profis” hat es uns diesmal angetan und ist Auslöser dafür, dass die PHP-Journal von uns demnächst nicht mehr abonniert wird.

Kleines Beispiel? Okay, Seite 74 aufschlagen und den Blick mittig schweifen lassen, direkt über das Bild. Was steht da als Überschrift? Genau: “Javascript”. Drunter ein kleiner “Profi-Tipp”, wie man es denn schafft, mit Javascript ein Pop-Fenster “on-top” zu halten.

1. Kam bestimmt noch keiner drauf, das ganze im body Tag via “onBlur=self.focus();” zu machen.

2. Was hat so ein Tipp in einem PHP-Journal in der Rubrik “PHP-Profi-Tipps” zu suchen?

Kleinigkeit? Kann ja mal passieren?
Es kommt noch besser. Eine Seite weiter, die Tipps mit Namen “Verschlüsselung” und “Formulare”. Coole Namen, besonders der Punkt “Verschlüsselung” “Passwörter verschlüsseln” fiel uns in Auge.

Mal schnell rein lesen, was die da wohl für einen tollen, neuen, uns unbekannten Tipp haben, auf den wahrscheinlich bisher nur absolute PHP-Götter kamen und … *sprachlos*

*meeP* Was wir dann lasen, brachte zuerst Verwirrung (meinen die das ernst?), dann nochmal Verwirrung (hieß die Rubrik wirklich “PHP-Tipps für Profis”?), dann doch ein kleines Schmunzeln (evtl. verwechseln die das mit einem April-Scherz) bis hin zu kleiner Traurigkeit (ne, scheint so, als meinen die das ernst).

Es wäre ein “Profi-Tipp”, wenn man doch bitte unsichere Inhalte mit solchen Strukturen absichert:

    $pass= ‘abcde’;
    $sicher = md5($pass);
    echo $sicher;
?>

Mal abgesehen davon, dass dies garantiert kein “Profi”-Tipp ist (jeder halbwegs begabte Anfänger kennt MD5), ist MD5 bestimmt keine Methode mehr, die man als “sicher” kennzeichnen könnte. Liebes “Profi”-Team der PHP-Journal, sucht mal nach “MD5 Cracken” und lernt.

Okay, nächster “Profi”-Tipp: “Formulare” “Arrays betrachten”.

Cool, (lacht noch über die Sache mit dem md5), mal sehen, ob das auch wieder so lustig wird.

Und: Wider aller Erwartung wurden wir wieder fündig: Um Daten aus einem Array ansehen zu können, könnte man doch die Funktion

print_r($_POST);

benutzen (hier stellt diese alle POST Daten dar).

Auch hier der Hinweis: Was hat das bitteschön in der Profi-Ecke zu tun? Dies sollte jeder End-Anfänger schon wissen.Und wenn ich – als Autor – schon so einen Tipp in die “Profi”-Ecke stelle, dann sollte ich das ganze wenigstens auch in

 – Tags setzen, damit solch ein Profi – der solche Tipps noch nötig hat – das ganze auch noch auf im Browser lesen kann (weil solche “Profis” sicherlich noch nichts für die Konsole programmiert haben, wo diese Ausgabe dann wieder klar strukturiert und lesbar ist).

Versteht mich nicht falsch, die Tipps sind sicherlich ganz toll … für Newbies, Anfänger und Leute, die PHP grade erst kennengelernt oder noch nicht viel professionelles damit gemacht haben.

Mit “Know-how für PHP-Profis” hat das nichts mehr zu tun, denn Profis sollten das alles schon lange wissen und täglich umsetzen.

Liebe Redaktion der PHP-Journal: Uns reicht es nun und wir bestellen eure Zeitung ab. Wenn ihr irgendwann mal wirklich einen Profi-Tipp zustande bekommt, meldet euch doch bitte bei mir.

Auf Nimmerwiederlesen …