Datenbankzugriff

Status
Nicht offen für weitere Antworten.

purzelbaum_m

Aktives Mitglied
Hallo Leute,

ich würde gerne einen Datenbankzugriff machen (mySQL) dabei würde ich aber nicht nur gerne die Attributwerte sondern zunächst mal die Attribute selbst auslesen, also zum Beispiel nicht nur Hans Müller, sondern Vorname, Nachname, Hans und Müller.

Grund ist dafür die spätere Bennung der JLabels zur Anzeige, da dies dynamisch sein soll...

Kann mir wer da weiterhelfen ob und wenn ja, wie das geht??

Vielen Dank

Purzel
 

Eldaron

Aktives Mitglied
Funktioniert wie folgt:

Code:
try {
        // Create a result set
        Statement stmt = connection.createStatement();
        ResultSet rs = stmt.executeQuery("SELECT * FROM my_table");
    
        // Get result set meta data
        ResultSetMetaData rsmd = rs.getMetaData();
        int numColumns = rsmd.getColumnCount();
    
        // Get the column names; column indices start from 1
        for (int i=1; i<numColumns+1; i++) {
            String columnName = rsmd.getColumnName(i);
    
            // Get the name of the column's table name
            String tableName = rsmd.getTableName(i);
        }
    } catch (SQLException e) {}
}
 

thE_29

Top Contributor
Will ja nix sagen, aber dein Code ist oberkäse²

Ne Exception was nie ausgegeben wird (ja genau für sowas hat man ja Exceptions eingeführt)

Statements und resultets was nie geschlossen wird (ja für sowas hat man close Methoden eingeführt)

...



Code:
ry {
        // Create a result set
        Statement stmt = connection.createStatement();
        ResultSet rs = stmt.executeQuery("SELECT * FROM my_table");
   
        // Get result set meta data
        ResultSetMetaData rsmd = rs.getMetaData();
        int numColumns = rsmd.getColumnCount();
   
        // Get the column names; column indices start from 1
        for (int i=1; i<numColumns+1; i++) {
            String columnName = rsmd.getColumnName(i);
   
            // Get the name of the column's table name
            String tableName = rsmd.getTableName(i);
        }
        rs.close();
        stmt.close();
    } catch (SQLException e) {
      e.printStackTrace();
}
}
 

Eldaron

Aktives Mitglied
Mein Code geht wenigstens ^^

Ne, ich hab eventuell beim Rauskopieren paar viele Zeilen weggeworfen, da seine Fragestellung ja nur war, wie er die TableHeader rausbekommt. Genau deswegen is auch das Errorhandling weggefallen, was aber auch jeder selbst implementieren sollte.
 

thE_29

Top Contributor
Du gibst einem der die Frage stellt (die man sicher über die Suche finden kann) einen "verstümelten" Code..

Die Wahrscheinlichkeit das er zu deinem Code (wenn er funktioniert) sich noch drüber Gedanken macht, bzw irendwas dazueinbaut ist net wirklich groß.. (hauptsache es geht ist die Devise von vielen..)


Deswegen, wenn man schon so große Codestücke postet, dann gleich mit Sinn, weil einem nur das Halbe beibringen kanns ja auch net sein...

(war ja net böse gemeint, aber die exception ausbauen war sicher mehr arbeit als sie drinnen lassen.. genauso wie die close Dinger)
 

purzelbaum_m

Aktives Mitglied
hmm.. irgendwie bekomme ich keine Verbindung

ich weiß ich brauch für mySQL mysql-connector-java-3.x.xx-bin.jar - den habe ich mir auch runtergeladen und entzippt, nur was mache ich mit den ganzen Dateien, wo müssen die hinkopiert werden?

meine Fehlermeldung ist:
java.lang.ClassNotFoundException: com.mysql.jdbc.Driver


vielen dank
 

AlArenal

Top Contributor
thE_29 hat gesagt.:
Ne Exception was nie ausgegeben wird (ja genau für sowas hat man ja Exceptions eingeführt)

Statements und resultets was nie geschlossen wird (ja für sowas hat man close Methoden eingeführt)

Vielleicht hat er sich ein Beispiel am Sourcecode vom Tomcat genommen? ;)
 

Leroy42

Top Contributor
purzelbaum_m hat gesagt.:
blubberBlubb.jar - den habe ich mir auch runtergeladen und entzippt

Böser Fehler :noe:
Das .jar-Archive darf nicht entpackt werden

purzelbaum_m hat gesagt.:
nur was mache ich mit den ganzen Dateien, wo müssen die hinkopiert werden?

Die .jar-Datei kopierst du einfach in den Ordner

java-jre-installation/lib/ext oder/und
java-jdk-installation/jre/lib/ext

und der Compiler und die JVM finden die Klassen des packages.
 

purzelbaum_m

Aktives Mitglied
sorry, mein Fehler, hab mich falsch ausgedrückt...

die Datei 'mysql-connector-java-3.0.17-ga' hab ich entzippt.. dabei bekam ich unter anderem 'mysql-connector-java-3.0.17-ga-bin.jar' sowie Ordner wie com, doc, docs, lib, org, testsuite und sonst noch ein paar Dateien.. das jar - File (alleine) habe ich in 'C:\Program Files\Java\jre1.5.0_06\lib\ext ' und 'C:\Program Files\Java\jre1.5.0_05\lib\ext' kopiert^^

geht aber nichts..
- ich arbeite mit dem JBuilder - weiß ned ob es daran liegen könnte??
 

thE_29

Top Contributor
Du musst noch diese externen Bibliotheken einhängen!

Gehst du auf Project -> Project Properties ->

Bei Paths rechts auf Required Libraries -> Add und dort hängst dein jar File mit mysql con oder so als Namen dazu!
 

AlArenal

Top Contributor
JARs ins JRE oder JDK zu kopieren ist ziemlich ekliger Stil. Beim JBuilder ist es zudem so, dass er sein eigenes JRE/JDK mitbringt und nicht auf ein installiertes zurückgreift. DIe saubere Lösung ist die von thE_29, nämlich das JAR ins Projekt einzufügen.
 

purzelbaum_m

Aktives Mitglied
es geht, vielen Dank für Eure Hilfe - werde sicherlich noch oft darauf zurückgreifen müssen, bis ich ebenso ein Guru werde :)
 

AlArenal

Top Contributor
purzelbaum_m hat gesagt.:
es geht, vielen Dank für Eure Hilfe - werde sicherlich noch oft darauf zurückgreifen müssen, bis ich ebenso ein Guru werde :)

Ein Guru? Ich wollt ich wäre einer.. Stattdessen übe ich mich öfter mal in Ehrfurcht und Neid ;)
 

Leroy42

Top Contributor
AlArenal hat gesagt.:
JARs ins JRE oder JDK zu kopieren ist ziemlich ekliger Stil.

Ja warum, wirbt dann SUN mit diesem "neuen" Extension-Mechanismus, wenn er
ekelig ist? Muß ich dann etwa für jedes kleine Hilfsprogramm/projekt z.B. das
SQL-Connector Jarfile kopieren.

Es sollte doch nur dann wichtig sein, wenn ein Programm ausgeliefert wird!?
 

Murray

Top Contributor
Eklig ist das deshalb, weil es eben doch manchmal vorkomment, dass man zwei Anwendungen verwenden möchte, die ihrerseits zwei inkompatible Versionen **derselben** Library verwenden wollen. Wenn man jetzt die entsprechenden Jars in jre/ext-Verzeichnis kopiert, "gewinnt" eine davon. Immerhin, man könnte sich für jede Anwendung ein eigenes JDK installieren; damit ist der Extension-Mechanismus nicht ganz so böse wie die DLL-Hölle von Windows, aber doch nahe dran.
 

Leroy42

Top Contributor
Murray hat gesagt.:
Immerhin, man könnte sich für jede Anwendung ein eigenes JDK installieren
:shock: Hilfe! :shock:
Warum nicht gleich einen Rechner mit passendem BS für jede Anwendung?

Murray hat gesagt.:
zwei inkompatible Versionen **derselben** Library
Kommt das denn vor? Ich hoffe doch stark, daß soetwas, von dir charmant
Windows-DLL-Hölle genannt, endlich der Vergangenheit angehört.
 

purzelbaum_m

Aktives Mitglied
Gibt es auch die Möglichkeit zu einem ColumnName den entsprechenden Typ auszulesen^^ sprich boolean, oder varchar , etc...??
 

Murray

Top Contributor
Leroy42 hat gesagt.:
Murray hat gesagt.:
zwei inkompatible Versionen **derselben** Library
Kommt das denn vor? Ich hoffe doch stark, daß soetwas, von dir charmant
Windows-DLL-Hölle genannt, endlich der Vergangenheit angehört.

Ich hatte das Problem schon mehrfach.

Mit dem JDK 1.5 ist es besser geworden, weil einige dieser Kandidaten (SAX und W3C-DOM) in einer definierten Version mitgeliefert wurden, aber vermutlich kann und wird es solche Unverträglichkeiten immer geben.

Und zur Idee, ein JRE zusammen mit einer Anwendung auszuliefern: das wird durchaus praktiziert, da man manchmal eben sicher sein will, dass sich das System beim Anwender exakt so verhält wie in der getesteten und vom Kunden abgenommenen Version, auch wenn der Anwender z.B. mit beta-Versionen irgendwelcher Libraries oder gar der VM experimentiert.
 

thE_29

Top Contributor
@Leoroy: ich hab zB 3 verschieden JDKs oben.. und diese verhunste MSJDK..

Weil eben verschiedene Kunden verschiedene JREs haben!
 

Dukel

Top Contributor
AlArenal hat gesagt.:
JARs ins JRE oder JDK zu kopieren ist ziemlich ekliger Stil. Beim JBuilder ist es zudem so, dass er sein eigenes JRE/JDK mitbringt und nicht auf ein installiertes zurückgreift. DIe saubere Lösung ist die von thE_29, nämlich das JAR ins Projekt einzufügen.

Ich hab das so gemacht, indem ich alle libs in ../java/lib kopiere (auch auf den Zweck verteilt (db, gui, report,...) ) und wenn ich das benötge binde ich das per Eclipse ein. Dann hab ich alle zentral gespeichert und muss nicht suchen, wo ich nun welche lib habe.
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben