Overblog Suivre ce blog
Editer l'article Administration Créer mon blog

Présentation

  • : Romagny13 - Du .NET,du pur .NET
  • Romagny13 - Du .NET,du pur .NET
  • : Cycle de progression Faire (quelque chose qui marche) -> comprendre ce que l’on fait/comment cela marche -> pousser plus loin les notions
  • Contact

Recherche

Articles Récents

2 février 2014 7 02 /02 /février /2014 01:32

3- La commande(SqlCommand)

La commande a besoin d’une connexion, d’une requête/procédure stockée. Elle peut également avoir besoin de paramètres. C’est elle qui va permettre de retourner des lignes avec un Datareader (requète select), effectuer une mise à jour (requête insert,update,delete,etc.) avec executeNonQuery .ExecuteScalar permettra de retourner un résultat comme la clé du dernier ajouté dans une table .

Il est important de libérer rapidement  les ressources dans une application accédant aux données , gérer les accès concurrentiels. C’est pour cela qu’on utilise les singletons, que l’on ferme rapidement la connexion et que l’on détruit les objets accédant à la base(en utilisant using)

- récupérer une liste

               public List<Client> GetClients()          

        {

            List<Client> clients = new List<Client>();

            SqlConnection connection = Sql.Instance.GetConnection();

 

             using (SqlCommand command = connection.CreateCommand())

            {

                command.CommandType = CommandType.StoredProcedure;

                command.CommandText = "GetAllFromClient";

                using (SqlDataReader reader = command.ExecuteReader())

                {

                    while (reader.Read())

                    {

                        Client client = new Client();

                        client.Id = reader["Id"] == DBNull.Value ? default(int) : int.Parse(reader["Id"].ToString());

                        client.Name = reader["Name"] == DBNull.Value ? default(string) : reader["Name"].ToString();

                        client.Email = reader["Email"] == DBNull.Value ? default(string) : reader["Email"].ToString();

                        client.CategoryId = reader["CategoryId"] == DBNull.Value ? default(int) : int.Parse(reader["CategoryId"].ToString());

 

                        clients.Add(client);

                    }

                }

            }

 

            connection.Close();

 

            return clients;

        }

- ajout, on récupère la clé du dernier ajouté avec SCOPE_IDENTITY() (voir plus loin les procédures stockées) (article intéressant

              public int AddClient(Client client)

        {

            int result = 0;

            SqlConnection connection = Sql.Instance.GetConnection();

 

            using (SqlCommand command = connection.CreateCommand())

            {

                command.CommandType = CommandType.StoredProcedure;

                command.CommandText = "InsertClient";

                command.Parameters.Add(new SqlParameter("@Name", client.Name));

                command.Parameters.Add(new SqlParameter("@Email", client.Email));

                command.Parameters.Add(new SqlParameter("@CategoryId", client.CategoryId));

 

                result = Convert.ToInt32(command.ExecuteScalar());

            }

            connection.Close();

 

            return result;

        }

- Obtenir une ligne/un élément par sa clé primaire

              public Client GetClient(int id)

        {

            Client client = new Client();

            SqlConnection connection = Sql.Instance.GetConnection();

 

            using (SqlCommand command = connection.CreateCommand())

            {

                command.CommandType = CommandType.StoredProcedure;

                command.CommandText = "GetClient";

                command.Parameters.Add(new SqlParameter("@Id", id));

 

                using (SqlDataReader reader = command.ExecuteReader())

                {

                    while (reader.Read())

                    {

                        client.Id = reader["Id"] == DBNull.Value ? default(int) : int.Parse(reader["Id"].ToString());

                        client.Name = reader["Name"] == DBNull.Value ? default(string) : reader["Name"].ToString();

                        client.Email = reader["Email"] == DBNull.Value ? default(string) : reader["Email"].ToString();

                        client.CategoryId = reader["CategoryId"] == DBNull.Value ? default(int) : int.Parse(reader["CategoryId"].ToString());

                    }

                }

            }

            connection.Close();

 

            return client;

        }

 

- Update

               public int UpdateClient(Client client)

        {

            int result = 0;

            SqlConnection connection = Sql.Instance.GetConnection();

 

            using (SqlCommand command = connection.CreateCommand())

            {

                command.CommandType = CommandType.StoredProcedure;

                command.CommandText = "UpdateClient";

                command.Parameters.Add(new SqlParameter("@Id", client.Id));

                command.Parameters.Add(new SqlParameter("@Name", client.Name));

                command.Parameters.Add(new SqlParameter("@Email", client.Email));

                command.Parameters.Add(new SqlParameter("@CategoryId", client.CategoryId));

 

                result = command.ExecuteNonQuery();

            }

            connection.Close();

 

            return result;

        }

 

- Delete

              public int RemoveClient(Client client)

        {

            int result = 0;

            SqlConnection connection = Sql.Instance.GetConnection();

 

            using (SqlCommand command = connection.CreateCommand())

            {

                command.CommandType = CommandType.StoredProcedure;

                command.CommandText = "DeleteClient";

                command.Parameters.Add(new SqlParameter("@Id", client.Id));

 

                result = command.ExecuteNonQuery();

            }

            connection.Close();

 

            return result;

        }

 

- Rechercher : Il peut être utile aussi d’avoir une fonction de recherche .Un exemple tout simple sur le nom de client .Cela retourne une liste dont le nom ressemble à la saisie

 

               public List<Client> SearchClient(string match)

        {

            List<Client> clients = new List<Client>();

            SqlConnection connection = Sql.Instance.GetConnection();

 

            using (SqlCommand command = connection.CreateCommand())

            {

                command.CommandType = CommandType.Text;

                command.CommandText = "SELECT * FROM [Client] WHERE Name LIKE '%' + RTRIM(@Name) + '%'";

                command.Parameters.Add(new SqlParameter("@Name", match));

                using (SqlDataReader reader = command.ExecuteReader())

                {

                    while (reader.Read())

                    {

                        Client client = new Client();

                        client.Id = reader["Id"] == DBNull.Value ? default(int) : int.Parse(reader["Id"].ToString());

                        client.Name = reader["Name"] == DBNull.Value ? default(string) : reader["Name"].ToString();

                        client.Email = reader["Email"] == DBNull.Value ? default(string) : reader["Email"].ToString();

                        client.CategoryId = reader["CategoryId"] == DBNull.Value ? default(int) : int.Parse(reader["CategoryId"].ToString());

 

                        clients.Add(client);

                    }

                }

            }

            return clients;

       

Partager cet article

Repost 0
Published by Romagny13 - dans ADO.NET
commenter cet article

commentaires