Je rencontre un problème étrange lorsque j'essaie d'exécuter une requête DELETE sur une table SQL Server à l'aide de VB.NET, SQL Command et Parameters.Sqlcommand Paramètres non exécutés
J'ai le code suivant:
Try
sqlCommand.Transaction = transaction1
sqlCommand.Connection = conn
sqlCommand.CommandText = sqlQuery
sqlCommand.Parameters.Add("@userID", SqlDbType.Int).Value = Convert.ToInt32(userID)
sqlCommand.Parameters.Add("@groupID", SqlDbType.Int).Value = Convert.ToInt32(groupID)
''#Delete the user from the group.
MessageBox.Show("User: " + Convert.ToString(userID) + " Group: " + Convert.ToString(groupID))
MessageBox.Show("Param, UserID: " + sqlCommand.Parameters.Item(0).Value.ToString)
MessageBox.Show("Param, GroupID: " + sqlCommand.Parameters.Item(1).Value.ToString)
return_deleteUser = sqlCommand.ExecuteNonQuery()
Catch ex As Exception
transaction1.Rollback()
Dim hr As Integer = Marshal.GetHRForException(ex)
MsgBox("Removal of user from group has failed: " + ex.Message() & hr)
End Try
qui exécute la requête SQL suivante:
Dim sqlQuery As String = "DELETE FROM MHGROUP.GROUPMEMS WHERE USERNUM [email protected] AND GROUPNUM [email protected]"
Mon problème est que lorsque le code est exécuté, il n'y a pas d'erreur rapporté du tout. J'ai couru le profileur SQL et la requête n'apparaît pas dans la liste de trace. Les trois boîtes de message que j'ai ajoutées tous retournent les valeurs correctes, et si je devais exécuter la requête SQL contre la table avec les valeurs la requête réussit. L'ID utilisateur et l'ID groupe sont tous les deux des entiers à 3 chiffres. Est-ce que quelqu'un peut suggérer pourquoi le code ne fonctionne pas comme prévu, ou n'importe quel autre débogage que je peux utiliser pour parcourir le code?
Idéalement, j'aimerais voir la requête SQL terminée avec les paramètres terminés, mais je n'ai pas trouvé comment faire cela.
EDIT: Je les suivantes plus tard dans le code pour vérifier si l'ensemble exécutons traités avec succès:
If return_insertEvent > 0 And return_updateUser > 0 And return_nextSID > 0 And return_deleteUser > 0 Then
MessageBox.Show("Success")
return_removeADGroup = RemoveUserFromGroup(userID, groupName)
MessageBox.Show("Remove FS User from AD Group: " + return_removeADGroup)
transaction1.Commit()
transaction2.Commit()
transaction3.Commit()
transaction4.Commit()
returnResult = 1
Else
transaction1.Rollback()
transaction2.Rollback()
transaction3.Rollback()
transaction4.Rollback()
returnResult = 0
End If
Si vous avez besoin de plus amples informations s'il vous plaît ne hésitez pas à me contacter.
Avez-vous vérifié que transaction.Commit est appelé? –