1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| public void PrintSomeData(string cnxString, int iVal, string strVal, DateTime dtVal) {
// on ouvre une connexion en se servant du 'using' qui se charge des closes/dispose
using (SqlConnection cnx = new SqlConnection(cnxString)) {
// une command pour construire notre requête
SqlCommand cmd = new SqlCommand("SELECT someField_1, someField_2 FROM someTable"
+ " WHERE someIntegerField = @iField"
+ " AND someStringField = @strField"
+ " AND someDatetimeField = @dtField", cnx);
// on y colle nos paramètres typés, directement valorisés
cmd.Parameters.Add("@iField", SqlDbType.Int).Value = iVal;
cmd.Parameters.Add("@strField", SqlDbType.VarChar).Value = strVal;
cmd.Parameters.Add("@dtField", SqlDbType.VarChar).Value = dtVal;
// on utilise un reader pour avoir les données sous forme de flux, et pas un gros paquet en mémoire
SqlDataReader rdr = cmd.ExecuteReader();
// tant que le reader nous renvoie des tuples
while (rdr.Read()) {
// on affiche ce qu'on trouve histoire de dire qu'on a pas requêter pour rien
Console.Write("> " + rdr["someField_1"].ToString() + " / " + rdr["someField_2"].ToString() + "\r\n");
}
// on pense bien à fermer le reader
rdr.Close();
}
} |