StudentID がテーブルの主キーである場合は、次を使用します。
DataRow row = dt.Rows.Find(studentID);
if (row != null)
textBox1.Text = row["StudentName"].ToString();
それ以外の場合は、dt.Select
メソッドを使用します。ところで、データ アクセス コードと UI コードを混在させるのはあまり良い考えではありません
更新:LINQも使用できます
string name = (from row in dt.AsEnumerable()
where row.Field<int>("StudentID") == studentID
select row.Field<string>("StudenName"))
.Single();
更新: 学生 ID を入力していて、学生の名前を取得したい場合は、データベースから学生の名前を取得して、パラメーターを sql コマンドに渡すことができます。
private string GetStudentName(int studentID)
{
string connString = @"Data Source=PC-PC\PC;Initial Catalog=Test;Integrated Security=True";
using (SqlConnection conn = new SqlConnection(connString))
{
string query = "SELECT StudentName FROM Entry WHERE StudentID = @studentID";
SqlCommand cmd = new SqlCommand(query, conn);
cmd.Parameters.Add("@studentID", SqlDbType.Int).Value = studentID;
conn.Open();
return (string)cmd.ExecuteScalar();
}
}
最初のエントリのみを返し (StudentID が PK でない場合)、DbNull を検証することも検討してください。
更新:学生のいくつかの属性を取得する必要がある場合は、クラス Student を作成しました。
public class Student
{
public int Id { get; set; }
public string Name { get; set; }
public string Grade { get; set; }
}
データリーダーからそのプロパティを入力しました:
private Student GetStudent(int studentID)
{
string connString = @"Data Source=PC-PC\PC;Initial Catalog=Test;Integrated Security=True";
using (SqlConnection conn = new SqlConnection(connString))
{
string query = "SELECT * FROM Entry WHERE StudentID = @studentID";
SqlCommand cmd = new SqlCommand(query, conn);
cmd.Parameters.Add("@studentID", SqlDbType.Int).Value = studentID;
conn.Open();
SqlDataReader reader = cmd.ExecuteReader();
if (!reader.Read())
throw new Exception("Student not found");
return new Student()
{
Id = (int)reader["StudentID"],
Name = (string)reader["StudentName"],
Grade = (string)reader["Grade"]
};
}
}
次に、テキスト ボックスに学生 ID を入力すると、データベースから学生を取得し、そのプロパティをコントロールに表示します。
int studentID = Int32.Parse(idTextBox.Text);
Student student = GetStudent(studentID);
nameTextBox.Text = student.Name;
gradeTextBox.Text = student.Grade;