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 FirstName=@fName";
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;
}
ここで注意すべき点は次のとおりです。コードをより安全にする、パラメーター化されたクエリを使用しました。"where x = "+ Textbox.Text +""
パーツを使用して選択ステートメントを作成する方法は、 SQL インジェクションにつながります。
これを次のように変更しました。
"Select * from Employees where FirstName=@fName"
oCmd.Parameters.AddWithValue("@fname", fName);
したがって、このコード ブロックは次のようになります。
データベースに対して SQL ステートメントを実行し、指定した名前と一致する名前があるかどうかを確認します。その場合、その人物は Person オブジェクトに格納されます (以下のクラスに関する私の回答を参照してください)。一致するものがない場合、Person オブジェクトのプロパティは になりますnull
。
明らかに、あなたが何をしようとしているのかわからないので、注意すべき点がいくつかあります: 一致する名前を持つ人が 1 人以上いる場合、最後の 1 人だけが保存され、あなたに返されます。このデータを保存できるようにしたい場合は、List<Person>
.
それをよりきれいにする人クラス:
public class Person
{
public string firstName { get; set; }
public string lastName { get; set; }
}
メソッドを呼び出すには:
Person x = SomeMethod("John");
次に、次のように Person オブジェクトから取得した値をテキストボックスに入力できます。
txtLastName.Text = x.LastName;