# [Anfänger] Ein einfaches Beispiel für Abfrage von MxSQL?



## -horn- (27. Jan 2009)

moien,

ich versuch mich gerade in datenbanken (mysql in meinem falle, weil ich das noch von php durch xampp habe) rein zu fuchsen, und habe mir schon eingie sachen hier im forum, bei suchmaschinensuche durchgelesen und finde das hier noch am besten beschrieben  http://www.pk-applets.de/linux/java_mysql.html

allerdings muss ich mal eine dumme frage stellen, für die ich noch keine antwort gefunden habe.
es wird immer davon gesprochen, dass der passende treiber für die datenbank geladen werden muss. okay, aber woher weiss ich das, ob ich den schon habe, bzw woher kriege ich den?
ich hab mir ja nur das java packet bis jetzt gezogen, aber was da alles drin ist habe ich keinen plan (leider).

also bevor ich nun anfange da szu versuchen und meine, ich kriege den code nicht zum laufen und das nur daran liegt, dass ich den treiber nicht habe, wollte ich euch mal fragen, wie das in meinem fallemit MySQL ist.

und das, was ich gelesen habe, finde ich sehr aufwändig, da war mir php lieber , aber mir ist es egal, hauptsache ich versteh nachher, wie es in java geht.

grüße und danke im voraus,


Andreas

PS: der titel soll MySQL beinhalten, aber da sagt das forum, dass es aus spamschutzgründen nicht reindarf.


----------



## mvitz (27. Jan 2009)

http://dev.mysql.com/downloads/connector/j/5.0.html

Die JAR Datei muss anschließend in den Klassenpfad (classpath) eingebunden werden. Dann sollte alles funktionieren.


----------



## -horn- (27. Jan 2009)

moien,

ich hab da snun entpackt, aber ich werd aus http://dev.mysql.com/doc/refman/5.1/de/connector-j-installing-classpath.html nicht schlau.
wenn ich das mit java -jar "mysql-connector-java-[version]-bin.jar" -cp versuche failed der immer.

grüße, Andreas


----------



## mvitz (27. Jan 2009)

```
java -cp mysql-connector-java-[version]-bin.jar;deinJarFile.jar KlasseMitMainMethode
```
versuch es mal so


----------



## -horn- (27. Jan 2009)

habi55 hat gesagt.:
			
		

> ```
> java -cp mysql-connector-java-[version]-bin.jar;deinJarFile.jar KlasseMitMainMethode
> ```
> versuch es mal so



moien,

was genau meinst du nun mit dem anhängsel "deinJarFile.jar KlasseMitMainMethode" ?

grüße, Andreas


----------



## HoaX (28. Jan 2009)

er will damit sagen dass du nicht den treiber starten kannst, das ists kein eigenständiges programm sondern eben ein treiber den du innerhalb deines codes lädst und verwendest. darum musst du das mysql-jar in den classpath aufnehmen und deine anwendung starten, nicht den treiber.

ansonsten empfehle ich dir die faq, wie man java-programme startet


----------



## -horn- (29. Jan 2009)

moien,

ich hab nun eine lösung für mich gefunden. da ich netbeans nutze konnte ich das nun so machen
http://www.linglom.com/2007/12/05/accessing-mysql-on-netbeans-using-jdbc-part-i-create-a-connection/
wenn man dann das buildet wird gleich in den dist ordner zusätzlich zur jar noch ein "lib" ordner samt enthaltenem treiber erstellt.

nun kann es also weitergehen und jetzt muss ich erstmal versuchen die tabellen anzusprechen und erstmal auszulesen.

grüße, Andreas


----------



## -horn- (29. Jan 2009)

moien,

so, nach anfänglichen schwierigkeiten habe ich nun eine einfache abfrage meiner testdb namens testing mit den zeilen "gni, gna, gnu" abzufragen und mir dort die einträge auszulesen.


```
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package datenbank;
import java.sql.*;

/**
 *
 * @author Andreas
 */
public class Main {

    /**
     * @param args the command line arguments
     */
    
    
    public Main(){
    }
    
    //http://www.linglom.com/2007/12/05/accessing-mysql-on-netbeans-using-jdbc-part-i-create-a-connection/
    public static void main(String[] args) {
        // TODO code application logic here
        try {  
            Class.forName("com.mysql.jdbc.Driver");
            String connectionUrl = "jdbc:mysql://localhost:3306/test?" + 
                                   "user=root"; //&password=YES
            Connection con = DriverManager.getConnection(connectionUrl);
            
            // abfrage
            // [url]http://dev.mysql.com/doc/refman/5.1/en/connector-j-usagenotes-basic.html#connector-j-examples-execute-select[/url]
            Statement stmt = null;
            ResultSet rs = null;
            try {
                stmt = con.createStatement();
                rs = stmt.executeQuery("SELECT * FROM testing");
                // resultset rs
                // [url]http://www.informatik.uni-koeln.de/ls_speckenmeyer/teaching/ss07/progprak/sql_java.pdf[/url]

                // or alternatively, if you don't know ahead of time that
                // the query will be a SELECT...

                if (stmt.execute("SELECT * FROM testing")) {
                    rs = stmt.getResultSet();
                }

                // Now do something with the ResultSet ....
                while(rs.next() != false){
                    System.out.println("222");
                    System.out.println(rs.getString(1));
                    System.out.println(rs.getString("gna"));
                }
            }
            catch (SQLException ex){
                // handle any errors
                System.out.println("SQLException: " + ex.getMessage());
                System.out.println("SQLState: " + ex.getSQLState());
                System.out.println("VendorError: " + ex.getErrorCode());
            }
            finally {
                // it is a good idea to release
                // resources in a finally{} block
                // in reverse-order of their creation
                // if they are no-longer needed

                if (rs != null) {
                    try {
                        rs.close();
                    } catch (SQLException sqlEx) { } // ignore 

                    rs = null;
                }

                if (stmt != null) {
                    try {
                        stmt.close();
                    } catch (SQLException sqlEx) { } // ignore

                    stmt = null;
                }
            }
            
            
            
            


        } catch (SQLException e) {
            System.out.println("SQL Exception: "+ e.toString());
        } catch (ClassNotFoundException cE) {
            System.out.println("Class Not Found Exception: "+ cE.toString());
        }
    }

}
```

ich finde das immernoch recht mühseelig im vergleich zu php, aber nun klappt das ja wenigstens .
werd mir nun erstmal angucken, wie sich rs.getInt und rs.getString nun auswirken, denn ich habe nicht überall strings in den feldern stehen.

nun bin ich aber erstmal zum glück einen größeren schritt weiter und hoffentlich geht das in die db schreiben genau so leicht 

ich meld mich, wenn ich mehr hinbekommen habe, bis dahin hoffe ich auf tipps, denn ich bin da anfänger und bin für jeden hinweis sehr sehr dankbar .

grüße, Andreas


----------



## -horn- (29. Jan 2009)

moien,

so, nach ein bisschen rumgesuche und rumgefrage bei einem kumpel, kriege ich nun auch das speichern und updaten hin.


```
Statement stat= con.createStatement();
            stat.execute("INSERT INTO testing (gni, gna, gnu) VALUES('Paul', 'm', '666')");
            //stat.execute("UPDATE testing SET gni = 'Muh', gna = 'Kuh', gnu = '3' WHERE gni = 'Paul'");
```

mal schauen, wie das nun bei increment einträgen ist, also den zahlenwerten,die sich automatisch hochzählen, aber das meiste und schwierigste ist wohl schon geschaft .


----------

