Problème avec "com.ExecuteNonQuery()"

Zildijan - 1 avril 2013 à 15:09
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 - 4 avril 2013 à 23:05
Bonjour à tous !

J'essaye de réaliser une petite interface permettant l’authentification lors de l'exécution d'une application.

J'ai crée une table dans ma base de données nommée "utilisateurs" dans laquelle je stock le nom, prénom, matricule et mot de passe.

sur mon interface d'authentification l'utilisateur doit introduire son matricule et son mot de passe et si les données sont correctes il pourra accéder à l'application. Mais j'y arrive pas.

Du coup, j'ai essayé juste de vérifier si un matricule X est présent dans ma table ou pas. Voici mon bout de code:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

Try
Dim connect As SqlConnection = New SqlConnection(...............)
connect.Open()
Dim com As SqlCommand = New SqlCommand("use base_traça SELECT * FROM utilisateurs WHERE Matricule= ( '" & TextBox1.Text & "')", connect)
com.ExecuteNonQuery()
If (com.ExecuteScalar > 0) Then
MessageBox.Show("Matricule valide!")

Else
MessageBox.Show("Matricule invalide!")
End If
Catch ex As Exception

End Try
End Sub


L'application fonctionne, si j'introduit un matricule invalide, j'obtiens le message correspondant. Par contre, si le matricule est présent dans ma base ça ne m'affiche pas le message correspondant.

Je travaille avec visual studio 2008 et sql server 2005. La base de données marche, j'arrive à y insérer les données sans problème.

Si quelqu'un peut m'aider avec ce bug ça sera trop sympa.

PS: Excusez moi pour la longueur du message, j'ai essayé d'être le plus clair possible.

3 réponses

NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
1 avril 2013 à 15:43
Bonjour,

Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : ).

As-tu essayer de mettre un point d'arrêt dans ton Catch ?
On généralement tendance à éviter les caractères non ASCII, comme les éèçà ... pour éviter les problème d'encodage.
As-tu essayer avec l'éditeur de la base de données pour vérifier que ta syntaxe est bonne, ça m'étonne d'avoir un use et un SELECT dans la même ligne sans séparation.

v----Signature--------v----------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices.[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : ).[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualBasic (onglet Références dans les propriétés du projet).[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés/list
---
Mon site
0
- J'ai rempli ma base avec une interface que j'ai crée et ça marche nickel
- J'ai essayé sans use, ça ne marche toujours pas
- ce que je ne comprends pas c'est pourquoi ça plante quand la valeur introduite existe dans la base.
j'ai affiché la valeur de com.ExecuteNonQuery et ça prends toujours -1.
0
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
4 avril 2013 à 23:05
Bonjour,

Je viens de remarquer :
ExecuteNonQuery
Avec
SELECT * FROM utilisateurs

C'est pas bon, non, SELECT retourne forcément quelque chose
Si tu veux avoir le nombre de ligne, un COUNT(*) ou SUM(1) est possible.


v----Signature--------v----------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices.[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : ).[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualBasic (onglet Références dans les propriétés du projet).[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés/list
---
Mon site
0
Rejoignez-nous