Webanwendung mit ASP.NET und SQL Server2008 - Abfrage bringt fehler bei richtigem Ergebnis



  • Hallo zusammen,

    der Titel hört sich etwas merkwürdig an aber ich komme nicht weiter..

    Situation..

    DB MS SQL Server 2008 Express und ASP.NET zum abfragen.
    Ich möchte die DB nach einen Eintrag durchsuchen bei dem Vor- und Nachname übereinstimmen...

    Dazu verwende ich die ExecuteScalar Methode, die beim ersten auffinden die Funktion beendet und (so denke ich) eine 1 als Ergebnis liefert, andernfalls 0.

    SQL String:
    objrs.CommandText = "SELECT [vname],[nname] FROM [bpb].[dbo].[bpb_user] WHERE [vname] = '" & mail & "' AND [nname] = '" & pass & "'"

    objrs.Connection = connect

    adapter.SelectCommand = objrs

    adapter.SelectCommand.Connection.Open()
    erg = objrs.ExecuteScalar

    If erg > 0 Then

    ausgabe = "Eintrag gefunden...<br />"

    End If

    Das Script wird tadellos ausgeführt solange die Bedingungen nicht zutreffen.. findet er aber einen Eintrag kommt folgende Fehlermeldung:

    Input string was not in a correct format.
    Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

    Exception Details: System.FormatException: Input string was not in a correct format.

    Kann mir jemand einen Tipp geben??

    Danke und Gruß, Nicky



  • http://msdn.microsoft.com/de-de/library/system.data.sqlclient.sqlcommand.executescalar(v=vs.80).aspx

    Wer lesen kann ist klar im Vorteil.

    Select Vorname, Nachname .....

    Sind 2 Werte.
    Es kommt nur ein Wert zurück.
    erg ist Hoffentlich dann auch ein String denn die Rückgabe wäre in einen String zu konvertieren.



  • Hallo Tom,

    gelesen habe ich... wohl nur falsch interpretiert...

    Die Methode ExecuteScalar() gibt den ersten gefundenen Eintrag als String() zurück... Ich habe das etwas mit ExecuteNonQuery() verwechselt. Diese gibt die Anzahl der Änderungen zurück (Integer), aber leider nicht für Lesezugriffe, nur bei Insert und Update.

    Ich prüfe nun die Länge von erg auf größer 0, dann weiß ich das ein Eintrag existiert.

    Nun läuft aber alles 🙂

    Gruß, Nicky



  • wenn dich die Spalten sowieso nicht interessieren, und du nur die Anzahl der Zeilen brauchst: Warum nicht COUNT() im sql-query + ExecuteScalar() ?


Anmelden zum Antworten