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;
}
这里有几件事需要注意:我使用了参数化查询,这使您的代码更安全。使用部件制作 select 语句的方式使您面临"where x = "+ Textbox.Text +""
SQL 注入。
我已将其更改为:
"Select * from Employees where FirstName=@fName"
oCmd.Parameters.AddWithValue("@fname", fName);
所以这段代码要做的是:
对您的数据库执行一条 SQL 语句,查看是否有与您提供的名字匹配的名字。如果是这种情况,该人将被存储在 Person 对象中(请参阅下面的类答案)。如果没有匹配,则 Person 对象的属性将为null
.
显然我不完全知道你要做什么,所以有几点需要注意: 当有超过 1 个人的名字匹配时,只有最后一个会被保存并返回给你。如果您希望能够存储这些数据,可以将它们添加到List<Person>
.
Person 类使其更清洁:
public class Person
{
public string firstName { get; set; }
public string lastName { get; set; }
}
现在调用该方法:
Person x = SomeMethod("John");
然后,您可以使用来自 Person 对象的值填充文本框,如下所示:
txtLastName.Text = x.LastName;