SqlDataReader zum Lesen in Liststring

7

Ich schreibe eine Methode in C #, um eine SQL Server Express-Datenbank von einem WCF-Dienst abzufragen. Dazu muss ich ADO.NET verwenden (und später mit LINQ neu schreiben).

Die Methode benötigt zwei Strings ( fname, lname ) und gibt dann ein "Health Insurance NO" -Attribut aus dem übereinstimmenden Datensatz zurück. Ich möchte das in eine Liste einlesen (es gibt auch einige andere Attribute, die abgerufen werden sollen).

Der aktuelle Code gibt eine leere Liste zurück. Wo gehe ich falsch?

%Vor%     
reallybadatmath 10.10.2013, 15:24
quelle

2 Antworten

17

Sie versuchen, eine DataTable via DataTable.Load & gt; in einer Schleife & lt; zu laden. Das brauchst du nur einmal. Sie verwenden auch reader.Read() in der Schleife. SqlDataReader.Read() bringt den Leser zum nächsten Datensatz ohne zu konsumiere es. Wenn Sie DataTable.Load verwenden möchten, müssen Sie den Reader nicht zuerst lesen. Sie müssen also die Schleife vollständig entfernen, um die Tabelle zu laden.

Da Sie jedoch eine Liste zurückgeben wollen, brauchen Sie nicht DataTable , sondern führen Sie den Leser einfach durch:

%Vor%

Abgesehen davon sind Sie offen für die SQL-Injektion ohne SQL-Parameter.

    
Tim Schmelter 10.10.2013, 15:30
quelle
2

Ich würde es so machen:

%Vor%     
Jamie 10.10.2013 15:34
quelle