DataRow Problem

LordDeath

Erfahrenes Mitglied
Hi

Ich habe ein Problem mit meinem DataRow. Ich poste hier erst mal den Code :

// Code

DataTable hwDataTable = new DataTable("Hardware");
DataRow hwDataRow;
hwDataRow = hwDataTable.NewRow();
hwDataRow("Host") = host;
hwDataTable.Rows.Add(hwDataRow);

// End Code

Ich habe eine Datenabankverbindung und führe einen SQL Befehl aus, der die Werte dann so:

hwDataAdapter.Fill(hwDataSet,"Hardware");

in mein DataSet schreibt.

Nun zum Problem der Compiler bringt beim Übersetzten folgende Meldung:

E:\Projekte\C#\Bathory\Form1.cs(881): 'hwDataRow' denotes a 'variable' where a 'method' was expected

Kann mir da jemand helfen ?

DarkGreetinx LordDeath
 
line 881 ist wahrscheinlich diese hier "hwDataRow("Host") = host;" oder?

probier mal mit "hwDataRow["Host"] = host;"
 
Ja jetzt sagt der Compiler nichts mehr aber beim ausführen bringt er mir jetzt den Fehler das "Host" in der Tabelle Hardware nicht existiert obwohl es in der Datenbank vorhanden ist !

DarkGreetinx LordDeath
 
Gibts da vielleicht ein Problem mit deinem DataAdapter?
Legst du die DataTable vorher an, also mit allen Spalten und so oder ist sie zum Zeitpunkt des Aufrufs der Fill() Methode leer?

Zu deiner Hilfe hier mal der Auszug aus der MSDN Lib zur Fill-Methode:
Hinweise
Die Fill-Methode ruft Zeilen aus der Datenquelle mit Hilfe der SELECT-Anweisung ab, die durch eine zugeordnete SelectCommand-Eigenschaft angegeben ist. Das der SELECT-Anweisung zugeordnete Verbindungsobjekt muss gültig, jedoch nicht geöffnet sein. Wenn die Verbindung vor dem Aufruf von Fill geschlossen ist, wird sie zum Abrufen der Daten geöffnet und anschließend geschlossen. Wenn die Verbindung vor dem Aufruf von Fill geöffnet ist, bleibt sie weiterhin offen.

Anschließend werden die Zeilen mit Hilfe der Fill-Operation Ziel- DataTable-Objekten im DataSet hinzugefügt, wobei die DataTable-Objekte erstellt werden, wenn sie nicht bereits vorhanden sind. Beim Erstellen von DataTable-Objekten werden von der Fill-Operation i. d. R. nur Metadaten für Spaltennamen erstellt. Wenn die MissingSchemaAction-Eigenschaft auf AddWithKey festgelegt ist, werden jedoch auch entsprechende Primärschlüssel und Einschränkungen erstellt.

Wenn SelectCommand die Ergebnisse von OUTER JOIN zurückgibt, legt DataAdapter keinen PrimaryKey-Wert für die resultierende DataTable fest. Sie müssen den Primärschlüssel explizit definieren, um sicherzustellen, dass doppelte Zeilen richtig aufgelöst werden. Weitere Informationen finden Sie unter Definieren eines Primärschlüssels für Tabellen.

Wenn der Datenadapter beim Füllen einer DataTable doppelte Spalten findet, generiert er für die jeweils folgenden Spalten Namen nach dem Muster "Spaltenname1", "Spaltenname2", "Spaltenname3" usw. Wenn die eingehenden Daten unbenannte Spalten enthalten, werden diese im DataSet entsprechend dem Muster "Spalte1", "Spalte2" usw. eingefügt. Wenn dem DataSet mehrere Resultsets hinzugefügt werden, wird jedes Resultset in einer separaten Tabelle platziert. Zusätzliche Resultsets werden benannt, indem dem angegebenen Tabellennamen ganzzahlige Werte angefügt werden (z. B. "Tabelle", "Tabelle1", "Tabelle2" usw.). Beim Verwenden von Spalten- und Tabellennamen in Anwendungen muss darauf geachtet werden, dass keine Konflikte mit diesen Benennungsmustern auftreten.

Wenn die zum Füllen des DataSet verwendete SELECT-Anweisung mehrere Ergebnisse zurückgibt, z. B. bei SQL-Batchanweisungen, und eines der Ergebnisse einen Fehler enthält, werden alle nachfolgenden Ergebnisse übersprungen und dem DataSet nicht hinzugefügt.

Sie können die Fill-Methode mehrmals für dieselbe DataTable verwenden. Wenn ein Primärschlüssel vorhanden ist, werden eingehende Zeilen mit bereits vorhandenen entsprechenden Zeilen zusammengeführt. Wenn kein Primärschlüssel vorhanden ist, werden eingehende Zeilen an die DataTable angefügt.

Hinweis Beim Behandeln von SQL-Batchanweisungen, die mehrere Ergebnisse zurückgeben, ruft die Implementierung von FillSchema für den .NET Framework-Datenprovider für OLE DB nur Schemainformationen für das erste Ergebnis ab. Verwenden Sie zum Abrufen von Schemainformationen für mehrere Ergebnisse Fill, wobei MissingSchemaAction auf AddWithKey festgelegt ist.

Ich hoffe das hilft.
Ansonsten lass dir doch einfach mal die Spalten deiner Tabelle ausgeben, bzw. das was dein Select-Statement aus der DB rausholt.
 
füll einfach mal nur das dataset und gib es mit hilfe eines datagrid's (egal ob web oder win32) aus. das datagrid generiert (mit AutoGenerateColumns=true) alle columns von alleine
spätestens dann wirst du das prob erkennen

zb:
asp.net:
Code:
dgHardware.DataSource = hwDataSet.Tables[0].DefaultView;
dgHardware.DataBind();

win-forms:
Code:
dgHardware.DataSource = hwDataSet.Tables[0].DefaultView;
 
Hi

Ich denbke das Prob ist das der DataRow keinen Bezug zur Datenbank hat oder
zu der Struktur der Datenbank !

Wie kann ich das dem sagen ?

DarkGreetinx LordDeath
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück