2017-06-17 1 views
-1

je suis débutant à microsoft asp.net et j'ai obtenu Une exception de type 'System.Data.SqlClient.SqlException' s'est produite dans System.Data.dll mais n'a pas été traitée dans l'utilisateur Erreur de code lors de la tentative de sélection de valeur dans la base de données Visual Studio de Microsoft. L'erreur était sur la ligneL'exception SQL n'a pas été gérée par le code utilisateur sur la connexion ouverte

Voici mon code con.Open():

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

Pourquoi est-il un espace dans 'C: \ Users \ Ng \ Documents \ Visual Studio 2015 \ Projects \ Assignment6 \ Assignment6 \ App_Data \ photoCompetition.mdf'? Essayez de l'enlever en premier. Utilisez également le mot-clé 'using' sur votre' SqlConnection' pour le mettre au rebut correctement. –

+0

Avez-vous essayé d'encapsuler le code dans le bloc 'try ... catch' et de vérifier quel est le problème? –

+0

j'avais enlevé l'espace mais maintenant l'erreur est à la ligne de sda.Fill (dt) ... –

Répondre

-1

Votre première question est que vous aviez un espace dans votre chaîne de connexion Sql.

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

maintenant depuis votre requête semble valide et en supposant que les tables et les colonnes EXISTE, vous rencontrez un problème avec la requête SQL que vous essayez d'exécuter. Je vois deux options ici.

  1. vos paramètres Enfermez avec une seule citation pour désigner comme une chaîne

    SqlCommand cmd = new SqlCommand("SELECT * FROM User WHERE email='@username' and password='@word'", con); 
    
  2. Utilisez SqlParameterCollection.Add Method (String, SqlDbType, Int32).

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

En outre, ne pas oublier de fermer votre SqlConnection avec con.Close();

+0

j'ai modifié mon code mais que la ligne de sda.fill a encore eu l'erreur avec le message Informations supplémentaires: Syntaxe incorrecte près du mot-clé 'User '. –

+0

La commande doit être configurée comme suit: 'SqlCommand cmd = nouvelle SqlCommand (" SELECT * FROM [Utilisateur] WHERE email = @ nom d'utilisateur et mot de passe = @ mot ", con);' Les guillemets ne sont pas nécessaires. – mjwills

+0

@mjwills vous n'avez évidemment pas eu ce que j'ai dit. Bonne chance. –