Datensätze effektiv einlesen

  • Themenstarter Themenstarter texton
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
T

texton

Gast
Ich möchte Datensätze möglichst effektiv in Arrays einlesen.

Ich stelle mir dazu ein mehrdimensionales Array vor, dessen Elemente jeweils ein Objekt-Array aufnehmen, das einen Datensatz repräsentiert. In einem Element dieses Objekt-Arrays kann ein weiteres Objekt-Array stehen, was Datensätze einer weiteren verknüpften Afrage aufnimmt.

Ist das wirklich effektiv oder kennt jemand bessere Methoden? Beispielcode?
 
Wie gesagt: Datensätze einlesen.

Über JDBC werden die Spalteninhalte ja als Strings eingelesen. Mit den entsprechenden Methoden, z. B. getInt(), kann ich die Zellenwerte gleich ins richtige Format bringen und so im Array speichern.

Die Datenbank soll eingelesen werden, z. B. SELECT * FROM tabelle. Das ResultSet wird der Reihe nach mit next() durchgegangen und jeder erhaltene Datensatz gespeichert. Bisher habe ich dazu Einzelanweisungen in ein Array geschrieben, z. B.:
Code:
class array // innere Klasse
{
   static String spalte1;
   static int spalte2;
   // usw.
}
int i = 0;
while( resultset.next() )
{
   array.spalte1[i] = resultset.getString( spalte1 );
   array.spalte2[i] = resultset.getInt( spalte 2 );
   // usw.
   ++i;
}
Jetzt möchte ich das Ganze über Objekt-Arrays lösen. Wenn ein eingelesener Wert true ist, soll ein Element, das ein weiteres Objekt-Array darstellt, Datensätze eines anderen ResultSets aufnehmen.
Code:
Object[] neu_array = new Object[anzahl_der_erhaltenen_datensätze_aus_resultset1];
Object[] neu_array2 = new Object[anzahl_der_erhaltenen_datensätze_aus_resultset2];
int i=0;
while( resultset.next() )
{
   neu_array[i] = resultset.getString( spalte 1 );
   neu_array[i] = resultset.getInt( spalte 2 );
   boolean b = resultset.getBoolean( spalte3 );
   if( b )
   {
	  resultset2.next();
      neu_array2[0] = resultset2.getString( spalte 1 );
      // usw.
	  System.arraycopy( neu_array2, 0, neu_array, 0, laenge );
   }
   else
   {
      Arrays.fill( neu_array2, "0" );
   }
}
Ich habe die Beispiele nicht auf syntaktische Korrektheit überprüft, hoffe aber, mein Gedanke dahinter ist klar geworden. Sortiert werden müssen die Elemente nicht, da sie bereits sortiert eingelesen werden. Ist meine Methode gut geeignet oder hat jemand Erfahrungen mit besseren, vielleicht über Collections?
 
Mit meiner Frage meinte ich eigentlich etwas anderes. Ob Felder als Kontainer für Daten geeignet sind oder nicht, hängt doch davon ab, was Du mit den Daten tun möchtest.
 
Die Felder verwende ich im Programm der Einfachheit halber wie Variablen, also z. B. array.spalte1. Nachteil: Ich habe die zu einem Datensatz gehörenden Elemente nicht in einem Objekt versammelt, sondern verwende einen Index i: array.spalte2, array.spalte3. Auch das hat Vorteile: spalte 1 hat bei mir den Inhalte der 1. Spalte für alle Datensätze usw. Nur widerspricht es eigentlich dem Grundsatz, dass zusammengehörige Daten auch zusammengehörig gespeichert werden sollten.
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben