Dans mon projet, j'ai besoin de consigner toutes les requêtes exécutées sur ma base de données. À titre d'exemple, nous pouvons utiliser les données de l'utilisateur du personnel ici. Dans cette classe, j'ai une fonction de génération de la commande avec les paramètres comme suit:Requête paramétrée en tant que chaîne
Public Function SQLUpdate(ByVal conn As SqlClient.SqlConnection) As SqlClient.SqlCommand Implements IDbConnected.SQLUpdate
Dim sqlstatement As String = "UPDATE Persons SET [email protected], [email protected], [email protected], [email protected], " & _
"[email protected], [email protected],[email protected], [email protected], [email protected], [email protected]"
sqlstatement &= " WHERE ID=" & Me.ID
Dim comm As New SqlClient.SqlCommand(sqlstatement, conn)
With comm.Parameters
.Add("@act", SqlDbType.Bit).Value = Me.Active
.Add("@abbr", SqlDbType.VarChar).Value = Me.Abbreviation
.Add("@first", SqlDbType.VarChar).Value = Me.FirstName
.Add("@last", SqlDbType.VarChar).Value = Me.LastName
.Add("@bday", SqlDbType.SmallDateTime).Value = Me.Birthday
.Add("@email", SqlDbType.VarChar).Value = Me.Email
.Add("@tel", SqlDbType.VarChar).Value = Me.Telephone
.Add("@fax", SqlDbType.VarChar).Value = Me.Fax
.Add("@reg", SqlDbType.Bit).Value = Me.Registered
.Add("@adm", SqlDbType.Bit).Value = Me.Administrator
End With
Return comm
End Function
Quand je demande le texte de commande
comm.CommandText
je reçois toujours la requête parametrizid
MISE A JOUR Personnes SET Actif = @ act, Abréviation = @ abbr, Prénom = @ premier, LastName = @ dernier, Anniversaire = @ bday, Email = @ email, Tel = @ tel, Fax = @ fax, Enregistré = @ reg, Admin = @ adm O WH ID = 2
hors cours J'ai besoin de la requête où les paramètres sont remplacés par les valeurs. Y at-il un moyen facile de faire cela ou ai-je besoin de programmer une fonction qui fait les remplacements elle-même?
+1 Définitivement maintenu paramétré. Juste pour ajouter, il peut être pratique d'avoir la sortie dans un formulaire read-to-run pour SSMS - donc j'ai précédemment écrit une méthode qui sérialisera la commande de façon appropriée avec des instructions DECLARE pour chaque param (correctement typé), et puis définissez ces variables avant le texte de la commande.Signifie que vous pouvez simplement copier n collez ceci dans un fichier journal directement dans SSMS – AdaTheDev
puisque ce problème est purement à des fins de journalisation Je vais prendre en compte votre proposition pour les ajouter à la chaîne. Je suppose que je rendais les choses plus difficiles qu'elles ne devraient l'être. Merci! – Geoffrey