Maison >développement back-end >Tutoriel C#.Net >Explication détaillée de l'utilisation de performnonquery

Explication détaillée de l'utilisation de performnonquery

藏色散人
藏色散人original
2020-02-26 10:13:5610502parcourir

Explication détaillée de l'utilisation de performnonquery

Explication détaillée de l'utilisation d'executenonquery

Utilisation d'ExecuteNonQuery dans la technologie de base de données d'exploitation en C#

Récemment, j'ai juste besoin de rattraper les connaissances de base, et je viens de rattraper quelques techniques de fonctionnement de bases de données en C#. Aujourd'hui, j'ai découvert ExecuteNonQuery, j'ai regardé le code de mon propre projet de maintenance de projet et ma requête de données en ligne. J'ai essentiellement compris l'utilisation de ExecuteNonQuery. Permettez-moi de faire un bref résumé, pour référence future.

La méthode ExecuteNonQuery est principalement utilisée pour mettre à jour les données, mais bien sûr elle peut également être utilisée pour effectuer des opérations cibles (comme interroger la structure de la base de données ou créer des objets de base de données tels que des tables). Il est généralement utilisé pour exécuter des instructions d'insertion, de mise à jour et de suppression afin de modifier les données de la base de données sans utiliser Dataset. L'instruction select ne convient pas à la méthode ExecuteNonQuery().

Recommander "Tutoriel vidéo C++"

1. Tout d'abord, examinons la valeur de retour de ExecuteNonQuery :

1. Pour Update, si les instructions insert ou Delete sont exécutées avec succès, la valeur de retour est le nombre de lignes affectées par la commande. Si le nombre de lignes affectées est 0, la valeur de retour est 0

2. Pour tous. pour d'autres types d'instructions, la valeur de retour est -1 ;

3. Si un retour en arrière se produit, la valeur de retour est également -1

4. Nous jugeons généralement si la valeur de retour est supérieure ; que 0 pour les opérations de mise à jour. Ce n'est pas un problème. Mais pour d'autres opérations [telles que les opérations sur les structures de données (création de tables, etc.)] si l'opération réussit, la valeur de retour est -1, mais faites attention, par exemple, à l'ajout d'une nouvelle table à la base de données. la création est réussie, -1 sera renvoyé. Une exception se produira si elle échoue. Il est préférable d'utiliser les instructions Try et Catch pour intercepter les exceptions lors de l'exécution de telles opérations.

2. Le processus de mise à jour de la base de données par l'objet de commande via la méthode ExecuteNonQuery est très simple :

1. Créez une connexion à la base de données ; 2. Créez un objet Command et spécifiez une requête SQL Inser, Update, Delete ou une procédure stockée

3. Attachez l'objet Command à la connexion à la base de données

4. Appelez ExecuteNonQuery() ; méthode ;

5. Fermez la connexion.

3. Comment utiliser l'exemple de code :

1. La première est une classe très simple, qui explique comment utiliser l'objet de commande pour communiquer avec la nouvelle base de données via la méthode ExecuteNonQuery.

public class ExecuteNonQueryClas
    {
        private static string connectionString = ConfigurationManager.ConnectionStrings["connectionString"].ConnectionString;

        //as this method provided static method, set the constructor to priviate to prevent create instance with 'new ExecuteNonQuery()'
        private ExecuteNonQueryClas()
        {

        }

        public static int ExecuteNonQuery(string commandText)
        {
            return ExecuteNonQuery(commandText, (SqlParameter[])null);
        }

        public static int ExecuteNonQuery(string commandText,SqlParameter[] commandParams)
        {
            //if connectionString is null, then throw exception
            if(connectionString == null || connectionString.Length == 0)
                throw new ArgumentNullException("connectionString");
            
            using(SqlConnection conn = new SqlConnection(connectionString))
            {
                SqlCommand cmd = new SqlCommand(commandText,conn);
                if (conn.State != ConnectionState.Open)
                    conn.Open();

                //check if the commandParams is not null, then attach params to command
                if(commandParams !=null)
                  AttachParameters(cmd,commandParams);

                int recordsAffected = cmd.ExecuteNonQuery();

                return recordsAffected;
            }

        }

        private static void AttachParameters(SqlCommand cmd,SqlParameter[] commandParams)
        {
            if (cmd == null) throw new ArgumentException("command");
            if (commandParams != null)
            {
                foreach (SqlParameter p in commandParams)
                {
                    if (p != null)
                    {
                        //// Check for derived output value with no value assigned
                        if ((p.Direction == ParameterDirection.InputOutput || p.Direction == ParameterDirection.Input) && (p.Value == null))
                        {
                            p.Value = DBNull.Value;
                        }
                        cmd.Parameters.Add(p);
                    }
                }
            }
        }
    }

2. Appelez la fonction principale :

static void Main(string[] args)
        {
            string userName = Console.ReadLine();
            string loginId = "user";
            string sqlString = "update Users set UserName = @name where LoginID= @loginID";
            SqlParameter[] parms ={
                                      new SqlParameter("@name",userName),
                                      new SqlParameter("@loginID",loginId)
                                       
                                  };

            int rlt = ExecuteNonQueryClas.ExecuteNonQuery(sqlString,parms);

            Console.WriteLine(rlt);
            Console.Read();
        }

D'accord, ce qui précède est l'introduction et l'exemple le plus simple d'utilisation de la méthode ExecuteNonQuery.

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!

Déclaration:
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