Entwickler-Ecke

Datenbanken (inkl. ADO.NET) - DataSet einlesen und mit DataGridView anzeigen


JT1971 - So 28.06.09 19:02
Titel: DataSet einlesen und mit DataGridView anzeigen
Moin 8)

Bastel gerade mal wieder an meinem kleinen Tool.
Blicke noch nicht ganz durch - hab im Galileo Open Book schon gelesen user defined image

Ich habe eine Datenbank mit mehreren Tabellen, die ich nun einlesen möchte.

Also erstelle ich ein Dataset


C#-Quelltext
1:
DataSet DS = new DataSet();                    


Einlesen soll dann über DataAdapter erfolgen


C#-Quelltext
1:
2:
SqlCeDataAdapter XY = new SqlCeDataAdapter(
    "SELECT * FROM List", conn);


Wobei dann List der Name einer der Tabellen ist.
Dann fülle ich mit

XY.Fill(DS, "XList");

das DataSet.


Um das DataSet zu füllen, muß ich dann für jede Tabelle ein Adapter erstellen?
Oder muß ich ein DataTable für jede Tabelle extra erstellen?
Oder geht das in einem Schwung (alle Tabellen der Datenbank)?

Verbinden tue ich das ganze ja mit


C#-Quelltext
1:
2:
   DGV.DataSource = DS;
   DGV.DataMember = DS.Tables["List"];


Aber in der Zeile DataMember krieg ich immer die Fehlermeldung

"Eine implizite Konvertierung "System.Data.DataTable" in "string" ist nicht möglich." user defined image

Was mache ich falsch?


JüTho - So 28.06.09 19:14

user profile iconJT1971 hat folgendes geschrieben Zum zitierten Posting springen:
Dann fülle ich über
XY.Fill(DS, "XList");
das DataSet.

Nimm der Einfachheit halber denselben Namen für die DataTable, nämlich "List" statt "XList".

user profile iconJT1971 hat folgendes geschrieben Zum zitierten Posting springen:
Um das DataSet zu füllen, muß ich dann für jede Tabelle ein Adapter erstellen?

Ja.

user profile iconJT1971 hat folgendes geschrieben Zum zitierten Posting springen:
Oder muß ich ein DataTable für jede Tabelle extra erstellen?

Das geschieht dadurch automatisch, dass im Fill-Befehl der Name der DataTable (= Name der DB-Tabelle) angegeben wird.

user profile iconJT1971 hat folgendes geschrieben Zum zitierten Posting springen:
Oder geht das in einem Schwung (alle Tabellen der Datenbank)?

Nein.

user profile iconJT1971 hat folgendes geschrieben Zum zitierten Posting springen:
Verbinden tue ich das ganze ja mit ...
Aber in der Zeile DataMember krieg ich immer die Fehlermeldung
"Eine implizite Konvertierung "System.Data.DataTable" in "string" ist nicht möglich."
Was mache ich falsch?

Bei DataMember muss eben ein String zugewiesen werden, keine DataTable. Das ist ganz einfach der Name der DataTable (bitte auch die Reihenfolge beachten, die ist sinnvoller):

C#-Quelltext
1:
2:
   DGV.DataMember = "List";
   DGV.DataSource = DS;

Gruß Jürgen


JT1971 - So 28.06.09 22:37

user profile iconJüTho hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconJT1971 hat folgendes geschrieben Zum zitierten Posting springen:
Dann fülle ich über
XY.Fill(DS, "XList");
das DataSet.

Nimm der Einfachheit halber denselben Namen für die DataTable, nämlich "List" statt "XList".

:oops: Ist klar

user profile iconJT1971 hat folgendes geschrieben Zum zitierten Posting springen:
Um das DataSet zu füllen, muß ich dann für jede Tabelle ein Adapter erstellen?

Ja.

Okay

user profile iconJT1971 hat folgendes geschrieben Zum zitierten Posting springen:
Oder muß ich ein DataTable für jede Tabelle extra erstellen?

Das geschieht dadurch automatisch, dass im Fill-Befehl der Name der DataTable (= Name der DB-Tabelle) angegeben wird.

Dann schaue ich mir das nochmal an

user profile iconJT1971 hat folgendes geschrieben Zum zitierten Posting springen:
Oder geht das in einem Schwung (alle Tabellen der Datenbank)?

Nein.

Och :wink:

user profile iconJT1971 hat folgendes geschrieben Zum zitierten Posting springen:
Verbinden tue ich das ganze ja mit ...
Aber in der Zeile DataMember krieg ich immer die Fehlermeldung
"Eine implizite Konvertierung "System.Data.DataTable" in "string" ist nicht möglich."
Was mache ich falsch?

Bei DataMember muss eben ein String zugewiesen werden, keine DataTable. Das ist ganz einfach der Name der DataTable (bitte auch die Reihenfolge beachten, die ist sinnvoller):

C#-Quelltext
1:
2:
   DGV.DataMember = "List";
   DGV.DataSource = DS;


:zustimm: Okay

Gruß Jürgen


Danke für die schnelle ausführliche Hilfe.
Werde ich mich unter der Woche mit beschäftigen 8)