Laden...

Spalteninformationen aus DB abrufen

Erstellt von Quallo vor 18 Jahren Letzter Beitrag vor 18 Jahren 2.268 Views
Q
Quallo Themenstarter:in
992 Beiträge seit 2005
vor 18 Jahren
Spalteninformationen aus DB abrufen

Ich bin dabei ein Datenbanktool für den firmeninternen einsatz zu schreiben.

Es sollen(nicht für alle Tabellen) nur Datensätze hinzugefügt werden können, es sollen keine gelesen oder gelöscht werden können.

Wie ist es nun möglich die Spaltenkopfinformationen für eine Tabelle in der Datenbank zu kriegen.

Sobald ich eine Zeile aus der Datenbank in das Dataset lese habe ich die Informationen über die Spalten im Datagridview drin und kann eine neue Zeile erstellen.

Wie kann ich das hinbekommen, ohne über ein Select Daten abzurufen?

Gibt es keine Befehl, der mir nur die Spalteninformationen für eine Zeile abruft?

Grüße Christoph

M
97 Beiträge seit 2004
vor 18 Jahren

Hallo Quallo

Handelt es sich um eine MS SQL Server DB?
Dann kannst du nämlich aus der Systemtabelle syscolumns die Informationen auslesen. Eine möglichkeit dafür im C# fällt mir grad nicht ein.

Gruss
MAjbO

N
4.644 Beiträge seit 2004
vor 18 Jahren

Da solltest Du doch über die Suchfunktion etwas finden.

Q
Quallo Themenstarter:in
992 Beiträge seit 2005
vor 18 Jahren

@MAjBO: Es handelt sich um Oracle.

I
1.739 Beiträge seit 2005
vor 18 Jahren
Q
Quallo Themenstarter:in
992 Beiträge seit 2005
vor 18 Jahren

Habe ich natürlich schon gelesen.

Aber muss das denn wirklich alles so kompliziert sein?
Eine nette eingebaute Funktion fände ich hübscher.
Wenn ich ein Select-Befehl ausführe übernimmt er ja auch alle Spaltenbezeichnungen und Typen.
Wieso geht das nicht ohne Select-Befehl?

Ich will ja nichts auswählen, ich will Spalten einfügen!

I
1.739 Beiträge seit 2005
vor 18 Jahren

Abrufen einer Leermenge?
select * from table_x where id=impossiblevalue
Sollte eine leere Tabelle zurückliefern(mit Spalteninformationen). Vielleicht ist es das was du suchst.

Q
Quallo Themenstarter:in
992 Beiträge seit 2005
vor 18 Jahren

Ich mache jetzt "Select * from Table where Rownum < 0".

Das liefert mir ein leeres Ergebnis, aber die Spalteninformationen werden angezeigt, das Dataset ist also typisiert(auch wenn man das vielleciht nicht ganz so nennen kann).

Sieht jemand den Fall, dass diese Lösung kaputt geht?

Ich denke, dass es auch bei anderen Datenbanken die Möglichkeit gibt, das Ergebnis künstlich auf null Ergbenissätze zu begrenzen.

Grüße Christoph

N
4.644 Beiträge seit 2004
vor 18 Jahren

Was hat das ResultSet damit zu tun ob das DataSet typisiert ist?
Entweder ist ein Schema vorhanden oder nicht.

Jede DB muss doch aber SP's oder ähnliches haben um Spalteninformationen auslesen zu können.

IMHO ist aber "SELECT * FROM INFORMATION_SCHEMA.Columns" SQL-Standard.

Q
Quallo Themenstarter:in
992 Beiträge seit 2005
vor 18 Jahren

Original von Quallo

Das liefert mir ein leeres Ergebnis, aber die Spalteninformationen werden angezeigt, das Dataset ist also typisiert(auch wenn man das vielleciht nicht ganz so nennen kann).

Es ist mir schon klar, dass das kein typisiertes Dataset ist. Es sind jetzt aber(zumindest für diese Tabelle) die Typinformationen sowie Namen der Spalten in dem Dataset, wenn ich das jetzt an das Datagrid binde habe ich dort eine leere Tabelle des gleichen Typs wie der Table auf den ich die Select-Anweisung angewendet habe.

Sollte aber eigentlich ganz deutchlich aus dem Thread hervorgehen, dass das so gedacht ist.

N
4.644 Beiträge seit 2004
vor 18 Jahren

Es ist mir schon klar, dass das kein typisiertes Dataset ist.

Aber einem Anfänger, der diesen Thread liest evtl. nicht!

Q
Quallo Themenstarter:in
992 Beiträge seit 2005
vor 18 Jahren

Deswegen habe ich ja vorsichtashalber das "(auch wenn man das vielleciht nicht ganz so nennen kann)" dazu geschrieben. Das sollte nicht mit einem typisierten Dataset verwechselt werden, sondern mit typisiert war gemeint, dass die Typinformationen für die Spalten festgelegt wurden.

Ist das damit geklärt?