Entwickler-Ecke
Datenbanken (inkl. ADO.NET) - Spezifische Eigenschaften einer Datenbanktabelle auslesen
DennisXX - Di 30.08.11 08:57
Titel: Spezifische Eigenschaften einer Datenbanktabelle auslesen
Hallo zusammen !
Kann mir vielleicht jemand von euch sagen, wie ich die Anzahl der Spalten einer beliebigen Datenbanktabelle und die Spaltennamen / Spaltenbezeichnung von einem C Sharp Programm aus aufrufen kann? Gibt es auch die Möglichkeit, die Anzahl der Datensätze aus einer Datenbanktabelle auslesen zu können?
Viele Grüße
Dennis
dark-destination1988 - Di 30.08.11 09:28
naja holst dir die Tabelle (zum Beispiel Select * from Test)
mit einem (bei Oracle) OracleDataReader
C#-Quelltext
1: 2: 3: 4: 5:
| while(reader.Read()) {
} |
wenn du die Werte in eine DataTable lädst( mithilfe des DataAdapters)
kannst du die Spaltennamen ermittel
C#-Quelltext
1: 2: 3: 4: 5:
| string[] spaltenstrings=new string[datatable.Columns.Count] for(int i=0;i<datatable.Columns.Count;i++) { spaltenstring[i]=datatable.Columns[i].ColumnName; } |
(eventuelle syntaxfehler nicht ausgeschlossen ;)
Ralf Jansen - Di 30.08.11 09:35
Die von dir verwendete konkrete DBConnection Klassen Implementierung hat eine
GetSchema [
http://msdn.microsoft.com/de-de/library/kcax58fh.aspx] Methode um Schemainformationen aus der Datenbank abzurufen. Zwischen den Schemainformationen (die sind vom Typ der Datenbank und vom Typ der Zugriffsmethode abhängig) solltest du auch die gesuchten Information finden können.
Zum Auslesen der Anzahl der Datensätze tut es ein einfaches SQL 'select count(*) from MeinLieberTabellenName'
DennisXX - Di 30.08.11 09:57
Hallo noch einmal !
Besten Dank für die Hilfe !
Wenn ich jetzt alle Spaltennamen in einem Array abgelegt habe (z.B. in einer Methode), wie genau muss ich den Methodenkopf / Rückgabewert deklarieren, wenn ich ein Array zurückgeben möchte?
Mein Ansatz,d er leider noch nicht funktioniert:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7:
| public string[] getNameColumn(){
.....C# Kode
return array[];
} |
Was mache ich da falsch?
Viele Grüße
Dennis
DennisXX - Di 30.08.11 10:09
Problem hat sich erledigt !!!
DennisXX - Di 30.08.11 11:42
Hallo zusammen !
ich habe noch einmal eine Frage wegen einem Stückchen Code, das ich geschrieben habe.
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28:
| public string[] getNameOfDatabaseColumn(String DatabaseTable) { string[] strColumns; String SQL = "SELECT * FROM " + DatabaseTable;
using (SqlConnection connection = new SqlConnection(ConnectionString)) { connection.Open();
SqlCommand command = new SqlCommand(); command.CommandType = CommandType.Text; command.Connection = connection; command.CommandText = SQL;
DataTable dtbCurrentDatabaseTable = new DataTable(); dtbCurrentDatabaseTable.TableName = DatabaseTable;
strColumns = new string[dtbCurrentDatabaseTable.Columns.Count];
for (int i = 0; i < dtbCurrentDatabaseTable.Columns.Count; i++) { strColumns[i] = dtbCurrentDatabaseTable.Columns[i].ColumnName; } }
return strColumns; } |
Hier wird keine For Schleife durchlaufen und mittels strColumns = new string[dtbCurrentDatabaseTable.Columns.Count];
kein Array erzeugt. Wo genau mache ich hier einen Fehler?
Ich vermute das die Zeilen
DataTable dtbCurrentDatabaseTable = new DataTable();
dtbCurrentDatabaseTable.TableName = DatabaseTable;
nicht korrekt sind. Der String DatabaseTable enthält den namen einer Datenbanktabelle.
Viele Grüße
Dennis
DennisXX - Di 30.08.11 12:16
Hallo !
Ok hiermit führe ich den SQL Command aus:
SqlDataAdapter = command.ExecuteReader;
Aber leider funktioniert das nicht.
Ralf Jansen - Di 30.08.11 12:33
Zitat: |
SqlDataAdapter = command.ExecuteReader; |
Du verwechselst Data
Reader mit Data
Adapter ;)
Der SqlAdapter verwaltet eigentlich selbst schon einen Satz von Select, Insert, Update, Delete Kommandos damit man eine DataTable aus der Datenbank und Änderungen wieder zurück in die Datenbank bekommt. Da du schon ein Kommando zum heranholen der Daten hast kannst du das einfach einem neuen SqlAdapter (im Konstruktor) übergeben.
C#-Quelltext
1:
| SqlDataAdapter adapter = new SqlDataAdapter(command); |
Der DataAdapter hat dann eine Fill Methode um das Ergebnis dieses Kommandos in die DataTable zu überführen.
C#-Quelltext
1:
| adapter.Fill(dtbCurrentDatabaseTable); |
DennisXX - Di 30.08.11 12:48
Das hat hervorragend geklappt, danke dafür!
Wie genau erarbeitest du dir solche Lösungswege eigentlich? Nur durch das betrachten der MSDN Doku? Diese erschlägt einen fast immer finde ich und man sucht dennoch die Nadel im heuchaufen.
Viele Grüße
Dennis
Ralf Jansen - Di 30.08.11 13:04
Zitat: |
Wie genau erarbeitest du dir solche Lösungswege eigentlich? Nur durch das betrachten der MSDN Doku? Diese erschlägt einen fast immer finde ich und man sucht dennoch die Nadel im heuchaufen. |
Erfahrungssache oder manche würden auch von Intuition sprechen. Irgendwann entwickelt man ein Gefühl wie die Dinge in der Umgebung (hier .Net) funktionieren die man verwendet. Ich muss natürlich auch wie alle hier schonmal die sprichwörtliche Nadel suchen aber die Erfahrung/Intuition sorgt dafür das man meist eine gute Vorstellung hat wie die aussehen könnte und wo sie dann liegen müsste ;) Wenn ich mal behaupten darf das du Anfänger bist dann wird es ab dem Punkt für dich spürbar einfacher werden wenn du die Fragestellung zu deinem Problem richtig stellen kannst (für dich selbst nicht für uns). Dann sollte auch die Hilfe anfangen wirklich helfen zu können.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!