Hallo zusammen,
vor mir liegt folgende Aufgabe. Ich soll aus einer Datenbank zwei Tabellen auslesen. Zu dem Zeitpunkt interessieren mich nur die Spalten mit den BenutzerIDs. Diese soll ich mit java auslesen, aufsteigend sortieren und ausgeben.
Die Verbindung zur Datenbank habe ich. Ich habe auch schon das Zusammenlegen der Einträgen in einem Array zusammengepackt. Das soriteren klappt aber nicht 100%, obwohl Arrays.sort() der richtige Befehl dazu sein sollte. Ich finde leider kein Fehler in der Code:
die Code gibt raus:
1
2
21
22
3
Wieso werden die Zahlen im Array erst nach dem ersten Zeichen sortiert? Ich habe mehrere hinweise gefunden, dass auch ein String[] damit problemlos sortiert werden kann. Ein Int[] kann ich leider nicht verwenden, da ich von Query ein String bekomme und kann nicht in int umwandeln.War meine Vorüberlegund überhaupt richtig, ein Array dazu zu verwenden oder gibt es eine elegantere Lösung?
P/S was mich bei der Lösung noch stört, dass ich dem Array schon am Anfang einen Wert zuweisen muss, wobei die Anzahl der Benutzer auch wachsen könnte. Nur weiß ich nicht, wie ich das anders lösen könnte.
vor mir liegt folgende Aufgabe. Ich soll aus einer Datenbank zwei Tabellen auslesen. Zu dem Zeitpunkt interessieren mich nur die Spalten mit den BenutzerIDs. Diese soll ich mit java auslesen, aufsteigend sortieren und ausgeben.
Die Verbindung zur Datenbank habe ich. Ich habe auch schon das Zusammenlegen der Einträgen in einem Array zusammengepackt. Das soriteren klappt aber nicht 100%, obwohl Arrays.sort() der richtige Befehl dazu sein sollte. Ich finde leider kein Fehler in der Code:
Java:
// --- Daten auslesen
try {
ResultSet answerTable;
ResultSet questionTable;
String sQuestionid, sAskerid, sMember, sAnswererid;
String[] member= new String[100]; //muss bei größeren Datensätzen angepasst werden
//ResultSetMetaData answerTableMS;
answerTable = orderA.executeQuery( "SELECT DISTINCT answererid FROM cen.answer ORDER BY answererid " );
questionTable = orderQ.executeQuery( "SELECT DISTINCT askerid FROM cen.question ORDER BY askerid" );
int i = 0;
int j = 0;
//nun werden die IDs aus einer Tabelle in ein Array gepackt
while( answerTable.next() ) {
i++;
member[j] = answerTable.getString( "answererid" );
j++;
//System.out.println(sId + ": " + "\t" + sQuestionid + "\t" + sAnswererid);
}
//nun aus der zweiter Tabelle in das selbe Array
i = 0;
while( questionTable.next() ) {
i++;
member[j] = questionTable.getString("askerid");
j++;
}
//nächster Schritt sollte doppelte Einträge eliminieren
HashSet<String> strings = new HashSet<String>();
for (int k = 0; member[k] != null; k++) {
strings.add(member[k]);
}
member = strings.toArray(new String[0]); //String wieder in Array umwandeln
Arrays.sort(member);
System.out.println("*Vertices");
for (int m=0;m < member.length; m++){
System.out.println("KnotenID" + member[m]);
}
System.out.println("ENDE");
verbindung.close();
} catch( Exception e ) {
e.printStackTrace();
}
// --- Daten auslesen
die Code gibt raus:
1
2
21
22
3
Wieso werden die Zahlen im Array erst nach dem ersten Zeichen sortiert? Ich habe mehrere hinweise gefunden, dass auch ein String[] damit problemlos sortiert werden kann. Ein Int[] kann ich leider nicht verwenden, da ich von Query ein String bekomme und kann nicht in int umwandeln.War meine Vorüberlegund überhaupt richtig, ein Array dazu zu verwenden oder gibt es eine elegantere Lösung?
P/S was mich bei der Lösung noch stört, dass ich dem Array schon am Anfang einen Wert zuweisen muss, wobei die Anzahl der Benutzer auch wachsen könnte. Nur weiß ich nicht, wie ich das anders lösen könnte.
Zuletzt bearbeitet: