3 Stimmen

Wie liest man das Ergebnis von SELECT * aus verbundenen Tabellen mit doppelten Spaltennamen in .NET

Ich bin ein PHP/MySQL-Entwickler, der sich langsam in das Reich von C#/SQL Server vorwagt, und ich habe ein Problem in C#, wenn es darum geht, eine SQL Server-Abfrage zu lesen, die zwei Tabellen miteinander verbindet.

Gegeben sind die beiden Tabellen:

TabelleA:

int:id
VARCHAR(50):name
int:b_id

TabelleB:

int:id
VARCHAR(50):name

Und angesichts der Abfrage

SELECT * FROM TableA,TableB WHERE TableA.b_id = TableB.id;

In C# lese ich Abfragedaten normalerweise auf folgende Weise:

SqlDataReader data_reader= sql_command.ExecuteReader();
data_reader["Field"];

Nur in diesem Fall muss ich zwischen der Namensspalte von TabelleA und der Namensspalte von TabelleB unterscheiden.

In PHP würde ich einfach nach dem Feld "TabelleA.Name" oder "TabelleB.Name" fragen, aber wenn ich etwas wie

data_reader["TableB.name"];

in C#, mein Code ist fehlerhaft.

Wie lässt sich das beheben? Und wie kann ich eine Abfrage auf mehrere Tabellen in C# lesen?

0 Stimmen

-1voto

jtymann Punkte 753

Idealerweise sollten Sie niemals doppelte Spaltennamen in einem Datenbankschema haben. Wenn Sie also Ihr Schema umbenennen können, um widersprüchliche Namen zu vermeiden.

Diese Regel ist für genau diese Situation gedacht. Sobald Sie die Verknüpfung durchgeführt haben, handelt es sich nur noch um einen neuen Datensatz, und die Tabellennamen gehören im Allgemeinen dazu.

1 Stimmen

Ich bin eigentlich ganz anderer Meinung als er... Ich habe zum Beispiel gerne eine ID-Spalte in jeder Tabelle. Auf diese Weise wissen Sie, was die Primärschlüsselspalte ist, ohne jemals nachsehen zu müssen, selbst wenn Sie die Tabelle noch nie abgefragt haben.

1 Stimmen

Tut mir leid, Ihr Freund irrt sich. Die richtige Antwort lautet: "Verwenden Sie nicht SELECT *".

0 Stimmen

Sie sind ebenfalls anderer Meinung. Außerdem müssen wir uns oft mit Daten befassen, die wir nicht entworfen haben.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X