2017-06-17 3 views
-1

Ich bin Anfänger zu Microsoft ASP.net und ich bekam eine Ausnahme des Typs 'System.Data.SqlClient.SqlException' in System.Data.dll aufgetreten, aber wurde nicht in Benutzer behandelt Codefehler beim Versuch, Wert aus Microsoft Visual Studio-Datenbank auszuwählen. Der Fehler war auf der con.Open() Zeile unterSQL-Ausnahme wurde von Benutzercode bei Verbindung offen

ist mein Code:

SqlConnection con = new SqlConnection(@"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=C: \Users\Ng\Documents\Visual Studio 2015\Projects\Assignment6\Assignment6\App_Data\photoCompetition.mdf;Integrated Security=True;MultipleActiveResultSets=True;Application Name=EntityFramework"); 

    protected void Button1_Click(object sender, EventArgs e) 
      { 
       con.Open(); 
       SqlCommand cmd = new SqlCommand("SELECT * FROM User WHERE [email protected] and [email protected]", con); 
       cmd.Parameters.AddWithValue("@username", emailtext.Text); 
       cmd.Parameters.AddWithValue("@word", passwordtext.Text); 
       SqlDataAdapter sda = new SqlDataAdapter(cmd); 
       DataTable dt = new DataTable(); 
       sda.Fill(dt); 
       int i = cmd.ExecuteNonQuery(); 
       con.Close(); 

       if (dt.Rows.Count > 0) 
       { 
        Response.Redirect("Default.aspx"); 
       } 
       else 
       { 
        lblMsg.Text = "Your username and word is incorrect"; 
        lblMsg.ForeColor = System.Drawing.Color.Red; 
       } 
      } 
+0

Warum ein Raum in 'C ist es zu schließen: \ Benutzer \ Ng \ Documents \ Visual Studio 2015 \ Projects \ Assignment6 \ Assignment6 \ App_Data \ photoCompetition.mdf'? Versuchen Sie, es zuerst zu entfernen. Verwenden Sie auch das Schlüsselwort 'using' in Ihrer' SqlConnection', um es ordnungsgemäß zu entfernen. –

+0

Haben Sie versucht, den Code in den "try ... catch" -Block zu schreiben und zu überprüfen, wo das Problem liegt? –

+0

Ich hatte den Platz entfernen, aber jetzt ist der Fehler an der sda.Fill (dt) Zeile ... –

Antwort

-1

So Ihres erstes Problem ist, dass Sie einen Platz in Ihrer SQL-Verbindungszeichenfolge hatten.

C: \Users\Ng\Documents\Visual Studio 2015\Projects\Assignment6\Assignment6\App_Data\photoCompetit‌​ion.mdf

Jetzt, da Ihre Anfrage gültig und unter der Annahme sieht besteht die Tabellen und Spalten, sind Sie ein Problem mit der SQL-Abfrage, die Sie ausführen möchten. Ich sehe hier zwei Möglichkeiten.

  1. Ihre Parameter mit einem einfachen Anführungszeichen setzen Sie ihn als String SqlParameterCollection.Add Method (String, SqlDbType, Int32)

    SqlCommand cmd = new SqlCommand("SELECT * FROM User WHERE email='@username' and password='@word'", con); 
    
  2. Verwendung zu bezeichnen.

    cmd.Parameters.Add("@username", SqlDbType.Text).Value = emailtext.Text; 
    cmd.Parameters.Add("@word", SqlDbType.Text).Value = passwordtext.Text; 
    

Auch vergessen Sie nicht Ihre SqlConnection mit con.Close();

+0

Ich habe meinen Code ändern, aber dass sda.fill Zeile immer noch Fehler mit der Nachricht erhalten Zusätzliche Informationen: Falsche Syntax in der Nähe des Schlüsselwortes 'Benutzer ". –

+0

Der Befehl sollte folgendermaßen eingerichtet werden: 'SqlCommand cmd = neuer SqlCommand (" SELECT * FROM [Benutzer] WHERE email = @ Benutzername und Passwort = @ Wort ", con);' Die Anführungszeichen sind nicht erforderlich. – mjwills

+0

@mjwills Sie haben offensichtlich nicht bekommen, was ich gesagt habe. Viel Glück. –

Verwandte Themen