oder (SQL) Ermitteln von Feldattributen
Christian Lißner
- asp.net
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
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
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