Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Wie rufe ich Daten aus einer SQL Server-Datenbank in C# ab?

 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;
        }

Einige Dinge, die hier zu beachten sind:Ich habe eine parametrisierte Abfrage verwendet, die Ihren Code sicherer macht. So machen Sie die Select-Anweisung mit dem "where x = "+ Textbox.Text +"" Teil öffnet Sie für die SQL-Injektion.

Ich habe dies geändert in:

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

Was dieser Codeblock also tun wird, ist:

Führen Sie eine SQL-Anweisung für Ihre Datenbank aus, um zu sehen, ob es Vornamen gibt, die mit dem von Ihnen angegebenen übereinstimmen. Wenn dies der Fall ist, wird diese Person in einem Person-Objekt gespeichert (siehe unten in meiner Antwort für die Klasse). Falls vorhanden keine Übereinstimmung ist, sind die Eigenschaften des Person-Objekts null .

Offensichtlich weiß ich nicht genau, was Sie vorhaben, daher gibt es ein paar Dinge zu beachten:Wenn es mehr als 1 Person mit einem passenden Namen gibt, wird nur die letzte gespeichert und an Sie zurückgegeben diese Daten speichern möchten, können Sie diese zu einer List<Person> hinzufügen .

Personenklasse, um es sauberer zu machen:

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

Rufen Sie nun die Methode auf:

Person x = SomeMethod("John");

Sie können dann Ihre Textfelder mit Werten füllen, die aus dem Person-Objekt kommen, wie folgt:

txtLastName.Text = x.LastName;