Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Come recuperare i dati da un database di SQL Server in 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;
        }

Poche cose da notare qui:ho usato una query parametrizzata, che rende il tuo codice più sicuro. Il modo in cui stai facendo l'istruzione select con il "where x = "+ Textbox.Text +"" parte ti apre a SQL injection.

L'ho cambiato in:

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

Quindi ciò che farà questo blocco di codice è:

Esegui un'istruzione SQL sul tuo database, per vedere se ci sono nomi corrispondenti a quello che hai fornito. In tal caso, quella persona verrà archiviata in un oggetto Person (vedi sotto nella mia risposta per la classe). Se è presente non corrisponde, le proprietà dell'oggetto Persona saranno null .

Ovviamente non so esattamente cosa stai cercando di fare, quindi ci sono alcune cose a cui prestare attenzione:Quando ci sono più di 1 persona con un nome corrispondente, solo l'ultima verrà salvata e restituita a te. Se vuoi essere in grado di memorizzare questi dati, puoi aggiungerli a un List<Person> .

Classe persona per renderlo più pulito:

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

Ora per chiamare il metodo:

Person x = SomeMethod("John");

Puoi quindi riempire le caselle di testo con valori provenienti dall'oggetto Persona in questo modo:

txtLastName.Text = x.LastName;