我目前有三张桌子,学生,课程,课程,课程和课程
使用sql查询我设法使用组合框将类代码返回到文本框。现在我创建了一个SELECT查询,该查询应返回与该类代码链接的Lessons中的值。由于有六个课程链接到一个类,我希望这些行填充多个文本框。
课程代码课程名称课程学分...是课程表中的三列。因此,应该有六行结果来填充文本框。目前的守则我有
string conString = "DATA SOURCE HERE";
string query = @"SELECT [Lesson ID],[LessonName],[LessonCredits] from Lessons WHERE ClassID ='" + txtClassID.Text + "' ;";
SqlConnection conDateBase = new SqlConnection(conString);
SqlCommand cmdDatabase = new SqlCommand(query, conDateBase);
conDateBase.Open();
SqlDataReader myReader = cmdDatabase.ExecuteReader();
while (myReader.Read())
{
string sLessID = myReader.GetString(myReader.GetOrdinal("Lesson ID"));
string sLessNam = myReader.GetString(myReader.GetOrdinal("LessonName"));
string sLessCred = myReader.GetString(myReader.GetOrdinal("LessonCredits"));
txtLessId1.Text= sLessID;
txtLessName1.Text = sLessNam;
txtLessCred1.Text = sLessCred;
}
此代码仅返回课程表中与类ID相关的最后一个值,我有一种感觉,我需要将查询的结果放入循环然后存储到数组中,然后将文本框分配给阵列
答案 0 :(得分:0)
当然它只显示表格的最后一行。 Cauz你正在经历一个循环,循环在最后一行结束。对于你的要求,我会给你两个选择..
<强> 1 即可。创建两个按钮“上一课”和“下一课”,并在单击此按钮时移动行
在Form Class中添加两个变量,以便可以在button_click事件
上访问它们用于存储课程数据和
的System.Data.DataTable变量用于存储索引的int变量
DataTable Lessons;
int lessonIndex = 0;
private void combo_DropDown(object sender, EventArgs e)
{
SqlConnection conDateBase = new SqlConnection();
conDateBase.ConnectionString = connectionString;
conDateBase.Open();
string query = "SELECT [Lesson ID],[LessonName],[LessonCredits] from Lessons WHERE ClassID = @CLASS_ID";
SqlCommand cmdDatabase = new SqlCommand(query, conDateBase);
cmdDatabase.Parameters.Add("@CLASS_ID", System.Data.SqlDbType.VarChar).Value = txtClassID.Text;
SqlDataAdapter adapter = new SqlDataAdapter(cmdDatabase);
DataSet dSet = new System.Data.DataSet();
adapter.Fill(dSet, "Lessons");
Lessons = dSet.Tables["Lessons"];
lessonIndex = 0;
refreshValues();
}
private void btnPreviousLesson_Click(object sender, EventArgs e)
{
if (lessonIndex > 0 && Lessons != null && Lessons.Rows.Count > 0)
{
lessonIndex--;
refreshValues();
}
}
private void btnNextLesson_Click(object sender, EventArgs e)
{
if (Lessons != null && Lessons.Rows.Count > 0 && lessonIndex < Lessons.Rows.Count - 1)
{
lessonIndex++;
refreshValues();
}
}
private void refreshValues()
{
txtLessID1.Text = Lessons.Rows[lessonIndex]["Lesson ID"].ToString();
txtLessName1.Text = Lessons.Rows[lessonIndex]["LessonName"].ToString();
txtLessCred1.Text = Lessons.Rows[lessonIndex]["LessonCredits"].ToString();
}
<强> 2 即可。在DataGridView上显示课程数据
与combo_DropDown事件相同的代码,跳过最后两行和其他事件/函数并添加它们。
DataSet dSet = new System.Data.DataSet();
adapter.Fill(dSet, "Lessons");
Lessons = dSet.Tables["Lessons"];
dataGridView1.DataSource = Lessons;