String-Array aus SQL-Commando generieren



  • Hallo zusammen !

    ich arbeite gerade mit einer Oracle-Datenbank und möchte den Rückgabewert eines SQL-Statements, das mir immer genau eine Zeile zurückliefert in eine String-Array einpassen.

    Die Datenbank hat fix 6 Elemente (PrimKey, Name, Adresse, Datum, Uhrzeit, Betrag)

    Ich setze also das Kommando: cmd = new OracleCommand ("SELECT * FROM SPENDE WHERE 'PrimKey=0045'") ab und würde die 6 Ergebniswerte gerne in einem StringArray haben.

    Kann mir da jemand helfen ?

    lG
    Dietzi



  • SqlDataReader dr = cmd.ExecuteReader();
    dr.Read();
    string[] s = new string[dr.FieldCount];
    dr.GetValues(s);
    conn.Close();
    

    Allerdings wirst Du sicherlich Probleme bekommen, wegen der Konvertierung Datum -> String. Da musst Du in einer Schleife den DataReader durchlaufen und alles selbst Konvertieren.
    Muss es unbedingt ein string-Array sein, Du kannst doch auch die DataReader Instanz nutzen und über einen Index die Wert abrufen.

    dr[DeinIndex oder DeinSpaltenname]
    


  • also ich hab zwar einen OracleDataReader, aber deine haut hin

    string[] s = new string[dr.FieldCount];
    dr.GetValues(s);
    

    komisch dass ich damit was in den String schreiben kann - ich dachte mit GetValues(i) bekomm ich den Wert in der Spalte i - auf die obige Lösung wär ich in 100 Jahren nicht gekommen :):)



  • Dietzi schrieb:

    ich dachte mit GetValues(i) bekomm ich den Wert in der Spalte i

    Du verwechselst da GetValues(...) und GetValue(...). 😉



  • jetzt muss ich nochmal kommen 😞

    ich überprüfe jetzt die eingelesenen Werte auf Gleichheit und im Falle einer änderung an einer beliebigen Stelle möchte ich per UPDATE-Anweisung die Datenbank aktualisieren.

    sieht dann im Detail so aus:

    OracleCommand cmd_update = new OracleCommand("Update "+tabName+" set vorname='"+s[1]+....usw.)
    

    Danach noch ein

    cmd_update.ExecuteNonQuery();
    

    Leider passiert aber nichts in der Tabelle 😞



  • Bist Du sicher, dass Deine Query richtig ist?

    So sollte es funktionieren:

    SqlCommand cmd = new SqlCommand("UPDATE Table SET ... WHERE ...", conn);
    conn.Open();
    cmd.ExecuteNonQuery();
    conn.Close();
    

    Schau Dir mal die OracleParameter Klasse an, damit Du Dich gleich an parametrisierte Queries gewöhnst.



  • Danke, hat auch funktioniert - da war nur ein falscher Wert in der Query 🙄 🙄


Anmelden zum Antworten