Hallo Experten,
ich würde gern mit C# sysconstraints abfragen. Genauer gesagt möchte ich aus einer Datenbank die Primär und Fremdschlüssel auslesen. Kann mir da jemand weiterhelfen?
Vielen Dank
Heike
Hallo Heike!
Deine Frage „Kann mir jemand helfen“ kann man mit JA beantworten.
-D
Aber um Dein eigentliches Problem zu lösen:
Welche Datenbank?
Chris
Hallo Chris,
ich schreibe im Moment an einem Tool um verschiedene Datenbanken auszulesen, darunter auch MSQL, wie ich an die Systemtabellen komme weiss ich schon, kann aber leider nichts mit der Beschreibung anfangen. Bsp. status einer Tabelle bezeichnet den entweder gesetzten oder nicht Primär bzw Fremdschlüssel, der Eintrag wird bitweise angegeben, das heisst bei mir „2593“ Die Beschreibung erläutert jetzt das bei bestimmten Zahlen wie 2 ein Primärschlüssel bei 3 ein Fremdschlüssel usw vorhanden ist. Wie bekomme ich jetzt die Zusammenhänge?
Vielen Dank
Heike
Hallo Heike,
nur 2 Tabellentypen von MySQL kennen wirklich FK’s. PK kann man ja mit nem einfachen DESC abfragen. Der normale Typ MyIsam bietet Dir keine FK. Da hast Du kaum ne Chance.
Für MySQL InnoDB kannst Du mit
show table status from TABELLENNAME;
das Feld COMMENT abfragen. NUR bei INNODB sind hier die FK Beziehungen gelistet.
Alternativ gibts auch eine Exportversion der Datenbankstruktur - zur not diese parsen.
Die meisten anderen DB gegeben über Struktur Auskunft mit DESCRIBE.
Chris
Nachtrag:
Unter C# kann man sich, wenn die DB über einen ADO.net Treiber verfügt, die Struktur nachbauen und abfragen lassen. Dein Wunsch heisst also typisiertes DataSet.
Chris
PS: Ich finde Doppelpostings nicht gut
Hallo Chris,
sorry für das Doppelposting. Leider bin ich im anderen Brett nicht weitergekommen, da ich Antwort zwar bekommen habe, jedoch diese nicht für C# geeignet ist. Da ich nicht wusste ob von Euch Experten von C# auch das Brett von Datenbanken besucht wird (weiss ohnehin nicht ob das irgendwie geregelt ist) habe ich halt mein Glück hier versucht.
Vielen Dank für Deine Antwort. Da ich mich im Moment in ADO und C# einarbeite, war diese sehr hilfreich.
Gruss Heike