ResultSet Zeile als Objekt?

  • Themenstarter Themenstarter altes-kind
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
A

altes-kind

Gast
Hallo Leute,

wie kann ich eine einzelne Zeile eines ResultSets in ein Object umwandeln, da ich die Zeilen einzeln in einem Hashtable haben will.

z.B.
Code:
Hashtable priceData = new java.util.Hashtable();

String sqlStatement = "SELECT * FORM PriceData WHERE PriceSheetName = "+priceSheetName;
Statement st = getStatement();
ResultSet rs = st.executeQuery(sqlStatement);

while (rs.next()) {
    Object obj = diese Zeile des ResultSets; // Wie mache ich das richtig???
    priceData.put(rs.getString("ValidFrom")+"|"+rs.getString("ValidTo"), obj);
}
Ich hoffe ihr wisst was ich meine!

Danke!

altes-kind
 
Danke! Funktioniert aber so leider nicht:
Code:
incompatible types
found   : java.lang.Object
required: boolean

Oder mache ich was falsch?
 
du musst alle spaltenwerte in ein eigenes valueobjekt kopieren

=> es gibt kein "Objekt" für eine Zeile, eine Zeile ist nur ein gewisser Zustand des ganzen Resultset-Objects

und den Zustand manipulierst du mit next() = weiterwandern
 
du musst alle spaltenwerte in ein eigenes valueobjekt kopieren

O.k. und wie mache ich das?
Code:
Hashtable priceData = new java.util.Hashtable();
double ap = 0.0;
double lp = 0.0;
double sp = 0.0;

String sqlStatement = "SELECT * FORM PriceData WHERE PriceSheetName = "+priceSheetName; 
Statement st = getStatement(); 
ResultSet rs = st.executeQuery(sqlStatement); 

while (rs.next()) { 
    ap = rs.getDouble("AP");
    lp = rs.getDouble("LP");
    sp = rs.getDouble("SP";
    Object obj = new Object(ap, lp, sp); // Wie funktioniert das richtig???
    priceData.put(rs.getString("ValidFrom")+"|"+rs.getString("ValidTo"), obj);
}

Ich will quasi ein Object wie das ResultSet selber ist! So dass ich dann später irgendwie wie folgt an die Daten komme:
Code:
ResultSet rs = (ResultSet)priceData.get(validFrom+"|"+validTo)
Nur halt nicht als ResultSet Object!

Danke nochmals,

altes-kind
 
Leider nein! Muss unter 1.4 laufen! (ist ein Webserver mit dieser JVM - den kann ich leider nicht updaten!!)
 
Hmm... o.k... Du meinst also folgendermaßen?
Code:
/**
 * Klasse (Bean) Preisdaten
 */
public class Preisdaten {
    
    private double lp;  // Leistungspreis
    private double ap;  // Arbeitspreis
    private double sp;  // Servicepreis
    
    /**
     * Default Konsturktor
     */
    public Preisdaten() {
        lp = 0.0;
        ap = 0.0;
        sp = 0.0;
    }
    
    /**
     * Standard Konstruktor
     */  
    public Preisdaten(double lp, double ap, double sp) {
        this.lp = lp;
        this.ap = ap;
        this.sp = sp;
    }
    
    /**
     * Set-Methoden
     */
    public void setLp(double lp) { this.lp = lp; }
    public void setAp(double ap) { this.ap = ap; }
    public void setSp(double sp) { this.sp = sp; }
    
    /**
     * Get-Methoden
     */
    public double getLp() { return lp; }
    public double getAp() { return ap; }
    public double getSp() { return sp; }    
    
}

Und dann...
Code:
Hashtable priceData = new java.util.Hashtable(); 
double ap = 0.0; 
double lp = 0.0; 
double sp = 0.0; 

String sqlStatement = "SELECT * FORM PriceData WHERE PriceSheetName = "+priceSheetName; 
Statement st = getStatement(); 
ResultSet rs = st.executeQuery(sqlStatement); 

while (rs.next()) { 
    Preisdaten pd = new Preisdaten();
    pd.setAp(rs.getDouble("AP")); 
    pd.setLp(rs.getDouble("LP")); 
    pd.setSp(rs.getDouble("SP")); 
    Object obj = new Object(ap, lp, sp); // Wie funktioniert das richtig??? 
    priceData.put(rs.getString("ValidFrom")+"|"+rs.getString("ValidTo"), pd); 
}

Oder hast Du was anderes gemeint oder mache ich was falsch?

Grüßle und Danke,

altes-kind
 
oh ups..ich sollte richtig lesen

wenn du ein "ResultSet-artiges " objekt willst, dann benutz doch ne Map. Dann bist du nicht auf die Anzahl der Spalten angewiesen und kannst die Klassen für andere Tabellen benutzen
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben