Présentation de SqlCommand
SqlCommand permet d’encapsuler les instructions SQL à exécuter. À l’aide d’une connexion base de données établie, il envoie des ordres à la base et récupère les résultats d’exécution.
Le constructeur accepte deux paramètres : texte SQL (cmdText) et objet de connexion base de données (SqlConnection).
Exemple simple
Installez‑vous SQL Server et créez la table Article, puis insérez un enregistrement de test.
private void button1_Click(object sender, EventArgs e)
{
// 1. Définir la chaîne de connexion
string connectionString = "User ID=sa;pwd=qweqwe;initial catalog=DB;Data Source=.;";
// 2. Créer l’objet connexion
SqlConnection conn = new SqlConnection(connectionString);
// 3. Définir l’instruction SQL à exécuter
string cmdText = "SELECT GETDATE(),count(1) FROM [DB].[dbo].[Article]";
// 4. Créer l’objet commande, associer SQL et connexion
SqlCommand command = new SqlCommand(cmdText, conn);
conn.Open(); // Ouvrir la connexion base de données
// ExecuteScalar() : exécute SQL et renvoie la valeur de la [première ligne, première colonne] en type object
object res = command.ExecuteScalar();
MessageBox.Show(res.ToString());
conn.Close(); // Fermer la connexion
}Langage du code : C# (cs)
Table SQL Server
CREATE TABLE Article(
id INT PRIMARY KEY IDENTITY(1,1),
Title NCHAR(10) NULL,
AddTime NCHAR(10) NULL
);Langage du code : SQL (Structured Query Language) (sql)
Méthode principale : ExecuteScalar()
- Obtenir des résultats d’agrégation :
COUNT(),MAX(),MIN(),SUM() - Récupérer une seule valeur, par exemple l’heure courante de la base, l’ID de clé primaire auto‑incrémentée
Remarques :
- Le type de retour est
object, un cast manuel est nécessaire ; - Si la requête renvoie plusieurs lignes et colonnes, seule la première ligne, première colonne est conservée, les autres données sont ignorées ;
- Appelez
conn.Open()pour ouvrir la connexion avant exécution.
Bonne pratique d’écriture
Utilisez l’instruction using pour libérer automatiquement les ressources de connexion et éviter les fuites de connexion dues à un oubli de fermeture :
string connectionString = "User ID=sa;pwd=qweqwe;initial catalog=DB;Data Source=.;";
string cmdText = "SELECT GETDATE(),count(1) FROM [DB].[dbo].[Article]";
using (SqlConnection conn = new SqlConnection(connectionString))
{
SqlCommand command = new SqlCommand(cmdText, conn);
conn.Open();
object res = command.ExecuteScalar();
MessageBox.Show(res.ToString());
}
// À la sortie du bloc using, la connexion est libérée automatiquement. Pas besoin d’appeler manuellement conn.Close()Langage du code : JavaScript (javascript)
Compléments
Trois autres méthodes d’exécution sont fréquemment utilisées avec SqlCommand :
ExecuteNonQuery(): exécute INSERT/UPDATE/DELETE, renvoie le nombre de lignes affectéesExecuteReader(): renvoie un flux DataReader pour lire ligne par ligne plusieurs résultatsExecuteXmlReader(): lit des données au format XML (peu employé)
Nous aborderons ces usages dans les prochains chapitres.
SqlCommand