Bonjour,
je suis entrain de faire un petit site internet sur lequel il est possible d'enregistrer des informations.
Ces données sont stockées dans une base SQL.
Le fonctionnement:
j'envoi une requête avec des paramètres, la procédure vérifie que l'info ne se trouve pas déjà dans la table:
-elle renvoie -1 si l'info s'y trouve déjà
-elle renvoi le nombre de ligne ajoutée (soit 1) si l'info ne s'y trouvait pas.
Je teste ma requête avec SQL server management studio express,ça fonctionne impeccable.
Lorsque j'essai avec le site, je reçoit à chaque fois -1, mais l'info est quand même ajoutée dans la base de donnée, même si elle ne s'y trouvait pas encore.
Procédure:
Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 ALTER PROCEDURE [dbo].[ajout_info] @Nom nvarchar(50), @Passe nvarchar(max), AS BEGIN SET NOCOUNT ON; IF (SELECT count(ID) FROM Filles WHERE (Nom_lower=LOWER(@Nom))) > 0 BEGIN return -1 END ELSE BEGIN DECLARE @ID as uniqueidentifier set @ID = NEWID() INSERT INTO Infos (ID,Nom,Nom_lower,Passe) values (@ID,@Nom,LOWER(@NOM),@Passe) return END END
Dans vb.net:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 Public Function commandenonquery(ByVal proc As String, Optional ByVal params As ArrayList = Nothing) As Int16 Dim macommand As New SqlClient.SqlCommand(proc) macommand.CommandType = CommandType.StoredProcedure If Not ConnectionProc(macommand) Then 'test de l'ouverture de la connexion à la BDD Return -1 Exit Function End If If (Not params Is Nothing) Then For Each parameter As SqlClient.SqlParameter In params macommand.Parameters.Add(parameter) Next End If Try Dim i As Int16 = macommand.ExecuteNonQuery() Return i Catch ex As Exception Return 666 End Try macommand.Connection.Close() End Function
Partager