Wie man das DataSet zu erkennen, die Tabellennamen aus einer gespeicherten Prozedur?
Ich habe einen gespeicherten Prozeduren, die Renditen über 5 Tische und ich bin wieder so etwas wie dieses:
select <fields> from Products where ProductId = @ProductId
select <fields> from RelatedProducts where ProductId = @ProductId
select <fields> from MetaData where ProductId = @ProductId
gut erhalten Sie das wesentliche. Jetzt im Dataset, Wenn ich dies tun:
DataSet ProductDs = DAL.RetreiveProductMetadata(someInteger);
ProductName = DataSet.Tables["Products"].Rows[0]["columnName"].ToString();
Ihre werfen einer Ausnahme... naja, Fehler sagen TableName null ist, und beim Debuggen, stellt sich heraus, die Tabelle Namen sind eigentlich Namen wie "Results1", "Results2" und so weiter.
Ich versucht, gespeicherte Prozedur an:
select * From products AS Products
keinen Effekt.
Wie kann ich mit C# zu erkennen und verwenden Sie die Namen der Tabellen aus der Datenbank?
ps: ich habe alle möglichen Verschmilzt und Fälle, in das Feld, das sollte nicht ein problem darstellen, richtig?
Auch, versucht zu googeln und schlug den Kopf - weder gearbeitet.
- Was passiert, wenn Sie versuchen, den index für eine Tabelle mit einem int?
- Das würde funktionieren, natürlich, aber der Punkt der mich versucht, Sie mit dem Namen ist rein für die Lesbarkeit Zweck, so dass ich nicht bekommen zu verwechseln mit table[0] und [1] in der Zukunft (oder jede andere Programmierer, die funktioniert auf meinem code in der Zukunft)
- Anderen ein bisschen blöd Frage: haben Sie versucht, die Eingabe der name der Tabelle in Kleinbuchstaben? Ich erinnere mich, dass ähnliche Probleme in der Vergangenheit, aber bin mir nicht ganz sicher, wie ich diese gelöst, obwohl ich glaube mich zu erinnern etwas über die groß-und Kleinschreibung.
- ähm, Der Punkt ist, wenn ich Debuggen, der Datensatz zeigt Tabelle den Namen "Results1".. so Fall wäre nicht anders, richtig? Ich werde es trotzdem versuchen, nur für den Fall
- NÖ, kein Glück, als ich sagte Datensatz keine Informationen von Tabellennamen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie nicht. Die Tabelle name hat keine Bedeutung in der Ergebnismenge, da kann eine Abfrage enthalten viele Tabellen.
Sollten Sie wissen, was Ihre resultsets werden und sollten nicht die Ableitung der Tabelle Namen.
Ansonsten
BEITRETEN oder den ersten und otparywajut später
Oder definieren Sie Ihren Datensatz.xsd etc vorne und Karte entsprechend.
Es ist tatsächlich möglich, Sie müssen nur zum laden der Tabelle Schema der ersten, die keine Daten enthält, sondern auch Informationen über die Struktur der Tabelle inklusive Tabelle Namen:
Scheint dies nicht funktioniert, auf Anfragen enthalten sind, die in der Datenbank (wie Sie mit MS-Access), aber es macht den job für einen Stammtisch.
Die einzige Möglichkeit zum abrufen einer Tabelle mit Namen aus einem Datensatz, ist: ob Sie nennen es beim Befüllen von ein adapter oder manuell benennen Sie Sie später eine Tabelle zu einem Zeitpunkt:
wenn Sie nun auf der ds in die Zukunft, die Sie zugreifen können, indem Sie Namen;
ds.tables("nameoftable").rows
etc.oder benennen Sie Sie später.