Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Comment récupérer des données d'une base de données SQL Server en C# ?

 public Person SomeMethod(string fName)
        {
            var con = ConfigurationManager.ConnectionStrings["Yourconnection"].ToString();

            Person matchingPerson = new Person();
            using (SqlConnection myConnection = new SqlConnection(con))
            {
                string oString = "Select * from Employees where [email protected]";
                SqlCommand oCmd = new SqlCommand(oString, myConnection);
                oCmd.Parameters.AddWithValue("@Fname", fName);           
                myConnection.Open();
                using (SqlDataReader oReader = oCmd.ExecuteReader())
                {
                    while (oReader.Read())
                    {    
                        matchingPerson.firstName = oReader["FirstName"].ToString();
                        matchingPerson.lastName = oReader["LastName"].ToString();                       
                    }

                    myConnection.Close();
                }               
            }
            return matchingPerson;
        }

Peu de choses à noter ici :j'ai utilisé une requête paramétrée, ce qui rend votre code plus sûr. La façon dont vous faites l'instruction select avec le "where x = "+ Textbox.Text +"" part vous ouvre à l'injection SQL.

J'ai changé ceci en :

  "Select * from Employees where [email protected]"
  oCmd.Parameters.AddWithValue("@fname", fName);  

Donc, ce que ce bloc de code va faire est :

Exécutez une instruction SQL sur votre base de données, pour voir s'il y a des prénoms correspondant à celui que vous avez fourni. Si tel est le cas, cette personne sera stockée dans un objet Person (voir ci-dessous dans ma réponse pour la classe). n'existe pas de correspondance, les propriétés de l'objet Person seront null .

Évidemment, je ne sais pas exactement ce que vous essayez de faire, il y a donc quelques points auxquels il faut faire attention :lorsqu'il y a plus d'une personne avec un nom correspondant, seule la dernière sera enregistrée et vous sera renvoyée. Si vous souhaitez pouvoir stocker ces données, vous pouvez les ajouter à une List<Person> .

Classe de personnes pour le rendre plus propre :

 public class Person
    {
            public string firstName { get; set; }
            public string lastName { get; set; }
    }

Maintenant pour appeler la méthode :

Person x = SomeMethod("John");

Vous pouvez ensuite remplir vos zones de texte avec des valeurs provenant de l'objet Personne comme ceci :

txtLastName.Text = x.LastName;