Déclaration : Cet article a été publié dans "Computer Applications" Volume 23 Issue 11
Résumé : Dans le développement de divers systèmes, l'utilisation de procédures stockées est une bonne habitude, qui apporte non seulement des fonctionnalités telles que des tables temporaires, des fonctions et des curseurs, mais également Le débogage, la mise à niveau et la maintenance deviennent pratiques. Cependant, presque tous les appels de procédures stockées sont dans le même mode et la principale différence est que les paramètres de chaque procédure stockée sont différents. Alors, est-il possible d’utiliser une méthode pour unifier tous les appels de procédures stockées et réduire la programmation inutile ? Sur la base de l'étude de la base de données SQL Server et d'ASP.NET, nous avons implémenté une méthode d'appel unifiée. Cette méthode doit uniquement fournir le nom de la procédure stockée à appeler et fournir des valeurs de paramètres spécifiques lors de l'appel, afin que toute procédure stockée soit stockée. la procédure peut être appelée.
Mots-clés : procédure stockée, table système, vue structure de l'information, ADO.NET Code d'identification du document : ② Rapport de réalisation technique pratique (technologie), synthèse des apprentissages théoriques et pratiques sociales (sciences sociales)
Appeler les procédures stockées de la même manière dans .NET
Résumé : L'utilisation de procédures stockées est une bonne habitude dans le développement de projets. Elle fournit une table temporaire, des fonctions et des curseurs, et le débogage, la mise à niveau et la maintenance peuvent également en bénéficier. Cependant, presque tous les appels à une procédure stockée sont le même modèle, le principal. La différence entre eux réside dans les paramètres de chaque procédure stockée. Ensuite, pouvons-nous appeler la procédure stockée de la même manière malgré leurs différences et réduire le code de programmation. Nous l'avons fait après avoir étudié SQL Server et .NET. Seules les informations que vous fournissez sont celles-ci. nom de la procédure stockée et les valeurs de ses paramètres, vous n'avez pas besoin de créer les paramètres vous-même Mot clé : Procédure Stord, Table système, Schéma d'information, ADO.NET
Résumé : Dans le développement d'un projet, vous appelez souvent le. procédures stockées. Cependant, presque tous les appels de procédures stockées suivent le même modèle. La principale différence réside dans le type et la valeur de chaque paramètre créé. Alors, est-il possible d'appeler toutes les procédures stockées via une seule fonction (ou classe) ? Cet article implémente une méthode d'appel unifiée basée sur le principe d'utilisation des tables système fournies par la base de données. Cette méthode doit uniquement fournir le nom de la procédure stockée à appeler, et fournir des valeurs de paramètres spécifiques lors de l'appel, afin que tout soit disponible. une procédure stockée peut être appelée.
Résumé : Nous devons appeler des procédures stockées des systèmes de bases de données lors du développement d'un projet. Cependant, l'appel d'une procédure stockée est presque la même, la principale différence est la différence entre le type ou la valeur des paramètres, etc. Pouvons-nous appeler n'importe quelle procédure stockée via une fonction (ou une classe) ? Sur la base des tables système fournies par les systèmes de bases de données, nous avons écrit une classe pour appeler n'importe quelle procédure stockée dans cet article. Pour appeler une procédure stockée, les seuls paramètres que vous fournissez sont le nom de la procédure stockée et. la valeur de tous les paramètres de la procédure stockée.
private void GetProcedureParameter(params object[] settings)
{ SqlCommand myCommand2 = new SqlCommand();
myCommand2.Connection = this.myConnection;
"select * from INFORMATION_SCHEMA.PARAMETERS où SPECIFIC_NAME = '" + this.ProcedureName + "' commander par ORDINAL_POSITION";
SqlDataReader reader = null; reader = myCommand2.ExecuteReader(); // Créer un paramètre de retour
myParameter = new SqlParameter();
myParameter.ParameterName = "@Value";
myParameter . SqlDbType = SqlDbType.Int;
myParameter.Direction = ParameterDirection.ReturnValue;
myCommand.Parameters.Add(myParameter);
// Créez ici chaque paramètre, la valeur, la direction et d'autres attributs.
while(reader.Read())
{
myParameter = new SqlParameter();
myParameter.ParameterName = reader["PARAMETER_NAME"].ToString();
myParameter.Direction = reader["PARAMETER_MODE"].ToString()=="IN" ?ParameterDirection.Input:ParameterDirection.Output;
switch(reader["DATA_TYPE"].ToString()) {
case "int" :
if(myParameter.Direction == ParameterDirection.Input)
myParameter.Value = (int)parameters[i] ;
myParameter.SqlDbType=
SqlDbType.Int
; //... de nombreux traitements de types spécifiques sont omis
par défaut : break }
myCommand.Parameters.Add
(
myParameter);
3.2 Renvoie l'ensemble de données de résultat, la valeur de retour et l'ensemble de paramètres sortants. Après avoir créé les paramètres de la procédure stockée, nous pouvons appeler la procédure stockée. Parce que dans .NET, les classes couramment utilisées qui renvoient des jeux de résultats sont SqlDataReader et DataSet, et SqlDataReader ne peut être utilisé que tout en maintenant une connexion, mais pas DataSet. Dans notre implémentation, la connexion doit être déconnectée après l'appel, donc un DataSet est utilisé pour enregistrer l'ensemble de résultats renvoyé.
public SqlResult Call(params object[] settings){ // SqlResult est une classe auto-définie utilisée pour enregistrer les ensembles de données de résultats, les valeurs de retour et les ensembles de paramètres sortants SqlResult result = new SqlResult(); nécessaire String
myConnection = new SqlConnection(ConnectionString);
myCommand = new SqlCommand(this.ProcedureName, myConnection);
myCommand.CommandType = CommandType.StoredProcedure;
myAdapter = new SqlDataAdapter(
myCommand.Open(); Stockez les paramètres de la procédure et définissez les valeurs
GetProcedureParameter(parameters);
myAdapter.Fill(result.dataSet, "Table"); // Récupère la valeur du paramètre sortant et le nom de la procédure stockée et l'enregistre dans une table de hachage; GetOutputValue(result) ; // Libérez diverses ressources ici et déconnectez
myAdapter.Dispose();
myCommand.Dispose()
;
myConnection.Dispose
();
4. Travaux complémentaires Bien que notre implémentation ici concerne la base de données SQL Server, cette méthode peut être utilisée pour toute base de données qui fournit des vues de structure d'information, est conforme à la norme ANSI-92 ou fournit des métadonnées. Nous l'encapsulons dans une classe SqlProcedure et la procédure stockée peut être facilement appelée en cas de besoin, réduisant ainsi beaucoup de travail de code fondamentalement répétitif. Pour que la classe SqlProcedure prenne en charge davantage de types de données, dans la méthode GetProcedureParameter(), vous devez analyser le type, la direction, la longueur, la valeur par défaut et d'autres informations de chaque paramètre en fonction de vos propres besoins, puis créer ce paramètre. Fondamentalement, n'importe quel type peut être implémenté, même les types d'images peuvent être créés de cette manière. De cette façon, le cours peut être très général et utile dans n’importe quel projet.
Références
[1] Ray Rankins, Paul Jensen, Paul Bertucci, SQL Server 2000 Practical Book, Pékin : Electronic Industry Press, 2002
[2] MSDN Library janvier 2003, Microsoft Corporation.
À propos de l'auteur : Liu Zhibo (1979-), homme, de Xinhua, Hunan, maîtrise, principales orientations de recherche : réseau neuronal et reconnaissance de formes, système d'information bureautique.
email:[email protected]