2016-04-19 8 views
-1

Ich arbeite an einem Login-System für C# in asp.net. Ich bekomme immer den folgenden Fehler:Execute Reader Fehler

An exception of type 'System.Data.SqlClient.SqlException' occurred in System.Data.dll but was not handled in user code.

Ich weiß nicht, was ich falsch mache.

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using System.Data.SqlClient; 


public partial class LoginPage : System.Web.UI.Page 
{ 
protected void Page_Load(object sender, EventArgs e) 
{ 

} 


protected void Login_Click(object sender, EventArgs e)//P.N 
{ 
    SqlConnection conn = new SqlConnection("Data Source=(local)\\SQLEXPRESS;Integrated Security=True");//P.N 
    SqlCommand cmd = new SqlCommand();//P.N 
    cmd.Connection = conn;//P.N 


    cmd.CommandText = "SELECT Usernames,Passwords FROM logininfo WHERE [email protected] AND [email protected]";//P.N 
    cmd.Parameters.AddWithValue("@username", UsernameInput.Text);//P.N 
    cmd.Parameters.AddWithValue("@password", PasswordInput.Text);//P.N 

    conn.Open();//P.N 

    SqlDataReader reader = cmd.ExecuteReader();//P.N //!!! Error is HERE!! 
    string userName = "";//P.N 
    string userPass = "";//P.N 
    UsernameInput.Text = userName;//P.N 
    PasswordInput.Text = userPass;//P.N 
    while (reader.Read())//P.N 
    { 
     userName = reader["Usernames"].ToString();//P.N 
     userPass = reader["Passwords"].ToString();//P.N 
    } 


    if (userName != "" && userPass != "")//P.N 
    { 
     Response.Write("Login Successfull");//P.N 
     Session["name"] = userName; 
     Response.Redirect("Home.aspx");//P.N 
    } 
    else { 
     Error.Text = "Incorrect username/password";//P.N 
    } 

} 

}

+3

Also, was sagt die Ausnahme? Was genau ist falsch an deinem SQL? Haben Sie versucht, es auf dem Server selbst mit SSMS auszuführen? –

+1

Es sollte mehr Fehlerinformationen innerhalb der Ausnahme geben, aber bei einer Schätzung, da Sie keine Datenbank als den ersten Katalog innerhalb Ihrer Verbindungszeichenfolge angeben, ist Ihre 'logininfo' Tabelle möglicherweise nicht in der Standarddatenbank für den Benutzer? Es hängt nicht mit Ihrer Frage zusammen, aber Sie sollten anfangen, 'using' Blöcke zu verwenden, um sicherzustellen, dass Ihre' IDisposable' Objekte (SqlConnection, SqlCommand, SqlDataReader) korrekt entsorgt werden. – GarethD

+0

@GarethD Ich wette, dass der Fehler über eine Tabelle nicht gefunden wird – Steve

Antwort

3

Sie müssen die Datenbank einzustellen. Ihr Verbindungsstring sollte so aussehen:

"Data Source=(local)\\SQLEXPRESS;Initial Catalog=DataBaseName;Integrated Security=True"