C# Auf den Inhalt einer Datenbanktabelle zugreifen

PSP_GIGA

Cadet 3rd Year
Registriert
Jan. 2011
Beiträge
57
Hallo Leute,

und zwar ich habe eine Datenbank in Visual Studio eingebunden und möchte nun auf einen bestimmten Wert einer Tabelle zugreifen bzw. auf eine bestimmte Spalte.

Code:
sID = Datenbank.Tabelle.IDColumn.ToString();

nur jetzt gibt er mit nur den Namen der Spalte (ID)

ich möchte aber auf die einzelnen Werte zugreifen und diese vergleichen können.
z.B. Wenn ID = 1 dann soll er was ausgeben.

nur wie komme ich an die Werte bzw. den Inhalt der Spalte dran?

Bedanke mich für eure Antworten :)

PSP_GIGA
 
Kommt drauf an wie due die Datenbank eingebunden hast.
Als einfaches DataSet, oder als Entity Framwork-Datenbindung.

So abstrakt wie es da oben steht, würde ich sagen, dass du mit Datenbank.Tabelle.Rows weiterkommen müsstest.

Man könnte z.B. mit einer ForEach-Schleife alle Datenzeilen der Tabelle durchgehen.

foreach (DataRow row in Datenbank.Tabelle.Rows)
{

}

Beim Entity Framework ist das alles noch etwas eleganter gelöst.
 
Vielen Dank für die Antworten

ich habe jetzt so gemacht:

Code:
 foreach (DataRow row in Datenbank.Tabelle.Rows)
                    {
                        if (row.ItemArray[1].ToString() == sThema) //in sThema steht ein Wert drin der verlichen werden soll
                        {

                        }
                    }


Leider finde ich in ItemArray nur den 1. Wert aber es gibt um die 27.
Er zeigt aber nur den Wert aus der 1. Zeile an, deswegen auch ItemArray[1] weil er da den Wert drin stehen hat. Ich brauche aber von allen 27 Werten die Array ID

könnt ihr mir da weiterhelfen?
 
Du kannst das Array natürlich in einer 2. Schlaufe durchlaufen, oder suchst du was anderes?
 
Lass mal ItemArray weg und nimm row[1] oder row[27]

Kannst auch mal im Toolfenster "Überwachen" die row reinziehen, aufklappen und schauen was alles drin steht. Einfach einen Breakpoint setzen und debuggen. Im Debug-Modus kann man row dann ins Überwachungsfenster ziehen.

Zum Verständnis nochmal:

"Datenbank.Tabelle" ist die ganze Tabelle
"Datenbank.Tabelle.Rows" enthält alle Zeilen einer Tabelle
"Datenbank.Tabelle.Rows.Count" zeigt dir die Anzahl der Zeilen in der Tabelle
"Datenbank.Tabelle.Rows[1]" gibt die zweite(!) Zeile der Tabelle zurück (Die erste wäre Rows[0])
"Datenbank.Tabelle.Rows[1][5]" gibt aus Zeile 2 die 6.(!) Spalte zurück (Auch die Spalten beginnen bei 0)
Mit der foreach-Anweisung gehst du nun durch alle Zeilen und vergleichst den Wert einer Zelle mit sThema.
In deinem Codeschnipsel heißt das also: Du gehst durch alle Zeilen der Tabelle und vergleichst den Wert der zweiten Spalte der Tabelle mit sThema.
 
Zuletzt bearbeitet:
ja genau, gelöst habe ich es jetzt so:

Code:
 foreach (DataRow row in Datenbank.Tabelle.Rows)
                    {

                        for (int i = 0; i < 1; i++)
                        {
                            if (row.ItemArray[1].ToString() == sThema)
                            {
                               TextBox.Text = row.ItemArray[0].ToString();
                                break;
                            }
                        }

                    }

das mit ItemArray[1] bzw. [0] passt so, weil da die Werte drin stehen die ich brauche ;)

aber wenn ich genau die gleiche Abfrage nochmal machen möchte nur in einer anderen Methode verändern sich jeweils beide Werte zusammen, an was liegt das?
 
Die for-Schleife hat hier keinen Sinn, da du diese nur ein Mal durchläufst und i auch nicht nutzt.

Die Werte im DataSet werden anhand des geposteten Codes nicht verändert. Es kann sein, dass du 1. eine andere Abfrage machst oder 2. das DataSet irgendwo anders änderst. Oder eben dass 3. sThema etwas anderes beinhaltet.
 

Ähnliche Themen

Zurück
Oben