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