Il existe un certain nombre de choses que vous pouvez faire pour effectuer un simple remplacement de chaîne; cependant, je vous suggère fortement de vous pencher sur le paramétrage pour assurer la sécurité des injections et la réutilisation des plans de requête.
Les paramètres bénéficient également en évitant le problème de devis - il suffit donc de remplacer 'default'
par (par exemple) @p1
et vous êtes triés. Ce remplacement peut être:
-- TSQL
REPLACE(@cmd, '''default''', '@p1')
ou
// C#
.Replace(@"'default'", @"@p1")
De C#, cela un DbCommand
avec des paramètres; à partir de T-SQL, vous pouvez considérer sp_ExecuteSQL
. De toute façon, vous voudriez finir avec:
select * from tblname where test = @p1
Et fournissez @ p1 comme paramètre. Donc, de C#:
DbParameter param = cmd.CreateParameter();
param.Value = 0; // etc
cmd.Parameters.Add(param);
Ou de TSQL:
EXEC sp_ExecuteSQL @cmd, N'@p1 varchar(50)', 0
(remplacer varchar(50)
avec le type correct)
Pouvez-vous pas changer juste la façon dont vous avez fait preuve? –
s'il vous plaît dites-nous quel langage de programmation/système et quel système de base de données que vous utilisez. – splattne
Vous n'êtes pas sûr que le ré-étiquetage soit correct?Il était après l'aide de C# initialement alors peut-être nous avons besoin d'expliquer les périls de SQL généré ne pas re-tagger à SQL? –