Maison > base de données > tutoriel mysql > `cmd.CommandType = CommandType.StoredProcedure;` est-il nécessaire lors de l'exécution de procédures stockées en C# ?

`cmd.CommandType = CommandType.StoredProcedure;` est-il nécessaire lors de l'exécution de procédures stockées en C# ?

Barbara Streisand
Libérer: 2024-12-21 07:14:09
original
434 Les gens l'ont consulté

Is `cmd.CommandType = CommandType.StoredProcedure;` Necessary When Executing Stored Procedures in C#?

Définition de CommandType sur les commandes SQL : StoredProcedure vs. Text

Lors de l'utilisation de procédures stockées en C#, il est courant de rencontrer du code comme celui-ci :

string sql = "GetClientDefaults";

SqlCommand cmd = new SqlCommand(sql);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@computerName", computerName);
Copier après la connexion

Cependant, la question se pose : la ligne est-elle cmd.CommandType = CommandType.StoredProcedure ; nécessaire, et quelles sont les implications potentielles de ne pas l'utiliser ?

Considérations sur les performances

Selon les tests de performances, SQL Server effectue le paramétrage, que vous utilisiez CommandType.Text ou CommandType.StoredProcedure. Cependant, lors de l'utilisation de CommandType.StoredProcedure, le paramétrage est effectué plus efficacement par SQL Server. Cela se traduit par un avantage de vitesse pour l'utilisation de CommandType.StoredProcedure.

Déclarations de paramètres

Lors de l'utilisation de CommandType.Text, il est crucial d'inclure les noms de paramètres dans le CommandText lui-même. En effet, le wrapper sp_executesql, utilisé par SQL Server pour paramétrer l'instruction, ne transmet pas automatiquement les noms des paramètres. Par conséquent, vous devez les spécifier manuellement pour garantir une bonne exécution.

Par exemple, si vous créez une procédure comme celle-ci :

create procedure dbo.Test
(
   @Text1 varchar(10) = 'Default1'
  ,@Text2 varchar(10) = 'Default2'
)
as
begin
   select @Text1 as Text1, @Text2 as Text2
end
Copier après la connexion

Et puis l'appelez en utilisant CommandType.Text, vous devez inclure les noms des paramètres dans le CommandText :

string callText = "dbo.Test @Text1, @Text2";
Copier après la connexion

Sinon, vous rencontrerez une erreur indiquant que le paramètre spécifié n'a pas été fourni.

Conclusion

En résumé :

  • Pour des performances optimales, utilisez CommandType.StoredProcedure lors de l'exécution de procédures stockées.
  • Lors de l'utilisation de CommandType. Texte, faites attention à la déclaration des paramètres dans CommandText.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal