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% 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:
Abgesehen davon sind Sie offen für die SQL-Injektion ohne SQL-Parameter.
Tags und Links sql wcf c# sql-server-express ado.net