Prüft, ob eine Datentabelle Null ist

7

Der folgende Code ist, was ich verwendet habe, um Benutzerinformationen aus einer SQL-Datenbank abzurufen.

%Vor%

Jedoch gibt (dt! = null) nicht false zurück, wenn in der Datenbank kein Eintrag mit dem Benutzernamen LoginUser.Username vorhanden ist. Gibt es eine andere Möglichkeit zu überprüfen, ob der sqlcommand erfolgreich ist oder nicht?

    
Tony 10.09.2012, 20:29
quelle

4 Antworten

23

Sie erhalten ein leeres DataTable , wenn keine Datensätze übereinstimmen, sodass Sie die Anzahl der zurückgegebenen Datensätze überprüfen können:

%Vor%

Und, etwas außerhalb des Themas, lesen Sie bitte die Kommentare unter Ihrer Frage, dann Google die Begriffe SQL Injection und parametrisierte SQL-Anweisungen. Versuchen Sie, mit dies zu beginnen.

>     
driis 10.09.2012, 20:31
quelle
10

Warum ändern Sie nicht einfach die Anweisung, um zu sehen, ob die DataTable entweder null ist oder keine Zeilen enthält:

%Vor%

Außerdem sollten Sie, nebenbei bemerkt, auch in parametrisierte Abfragen schauen, anstatt SQL dynamisch zu erstellen. Es verringert die Anzahl der Angriffsvektoren für Angreifer, die versuchen, Ihre Anwendung zu kompromittieren.

    
Justin Niessner 10.09.2012 20:31
quelle
1

Es scheint mir eine DataTable und SqlDataAdapter ist ein bisschen zu schwer für die Aufgabe.

Sie können hier einfach einen DataReader verwenden:

%Vor%     
Michael Domashchenko 10.09.2012 21:01
quelle
0

Es ist besser, wenn Sie try catch verwenden, um zu überprüfen, ob die Tabelle leer ist oder nicht, behandeln Sie einfach die Ausnahme IndexOutOfRangeException .

Verwenden Sie die folgende Logik:

%Vor%

Für mich funktioniert es.

    
Arun Agarwal 29.11.2013 16:58
quelle

Tags und Links