Christian Lißner: oder (SQL) Ermitteln von Feldattributen

Ich möchte aus einer Tabelle die Eigenschaften der einzelnen Felder feststellen. Im speziellen interessiert mich, wie ich den Primary Key ermitteln kann und von welchem Datentyp die Felder sind.

Gibt es dafür Lösungen?

Besten Dank im Voraus!
Christian Lißner

  1. Hallo Christian

    Bei einer richtigen Datenbank (also nicht MS Access) kann man diese Dinge direkt per SQL über die Systemtabellen abfragen.

    Bei MS SQL 7.0 erfährst Du die Informationen über die folgenden beiden SQl-Statements:

    Select * from sysobjects

    liefert alle Tabellen, Stored-Procedures, Primary-Keys etc. aus Deiner DB

    Select * from syscolumns

    liefert Dir die Informationen zu den Spalten in Deiner DB

    Wie es bei anderen DB-Servern aussieht, kann ich Dir nicht genau sagen, grundsätzlich sind aber in jeder SQL-Datenbank die Tabellen- und Feldinformationen über die Systemtabellen abfragbar.
    Beachte jedoch, dass Du keine Änderungen an den Systemtabellen direkt vornehmen sollst (UPDATE,INSERT,DELETE). Dafür existieren in der Regel vorbereitete Stored-Procedures.

    Grüsse
    Tom

  2. Hallo Christian,

    jede Menge Lösungen gibt es. Mein Vorredner sagte es ja bereits.
    Hier noch einige Ergänzungen für SQL-Server:

    select name, xtype from syscolumns where name = 'spaltenname';

    liefert Dir die enum des Felddatentyps der Spalte 'spaltenname'

    Eine kleine Liste:
    231=nvarchar
    60=currency
    61=datetime
    48=binary
    56=smallint

    etc.

    Du kannst ja mal die Systemtabelle 'syscolumns' abfragen und dir das Material Deiner DB anschauen. In Deiner ASP dürfte es dann ja kein Problem sein, diese Tabelle in ein Recordset zu ziehen und die abglieferten enums in Klartext umzusetzen.

    In der 'falschen' Datenbank Access gibts ähnliche Möglichkeiten.

    Im übrigen empfehle ich Dir wärmstens:

    http://www.asp-faq.de/faq/

    von Stefan Falz

    Gruss
    Uwe Nohl

    Ich möchte aus einer Tabelle die Eigenschaften der einzelnen Felder feststellen. Im speziellen interessiert mich, wie ich den Primary Key ermitteln kann und von welchem Datentyp die Felder sind.

    Gibt es dafür Lösungen?

    Besten Dank im Voraus!
    Christian Lißner