Return 多个 SQL 查询结果到文本框
Return multiple SQL query results to text boxes
我目前有三个 tables,Student,Less/Stu,Lessons 和 Class
使用 sql 查询我设法使用组合框将 return class 代码添加到文本框。现在我已经创建了一个 SELECT 查询,该查询应该 return 与 Class 代码链接的课程中的值。由于有六个课程链接到 class 我希望这些行填充多个文本框。
课程代码 课程名称 课程学分...是课程 table 中的三列。因此应该有六行结果来填充文本框。我的当前代码
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;
}
此代码仅 return 课程 table 中与 class ID 相关的最后一个值,我觉得我需要将查询结果放入进入一个循环,然后存储到一个数组中,然后将文本框分配给该数组?
当然只显示table的最后一行。因为你正在经历一个循环,循环在最后一行结束。针对你的这种需求,我给你两种选择..
1。创建两个按钮 'Previous Lesson' 和 'Next Lesson',并在单击此按钮的同时在行中移动
在您的表单 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 事件上的代码与上面相同,跳过最后两行和其他 events/functions 并添加这些。
DataSet dSet = new System.Data.DataSet();
adapter.Fill(dSet, "Lessons");
Lessons = dSet.Tables["Lessons"];
dataGridView1.DataSource = Lessons;
我目前有三个 tables,Student,Less/Stu,Lessons 和 Class
使用 sql 查询我设法使用组合框将 return class 代码添加到文本框。现在我已经创建了一个 SELECT 查询,该查询应该 return 与 Class 代码链接的课程中的值。由于有六个课程链接到 class 我希望这些行填充多个文本框。
课程代码 课程名称 课程学分...是课程 table 中的三列。因此应该有六行结果来填充文本框。我的当前代码
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;
}
此代码仅 return 课程 table 中与 class ID 相关的最后一个值,我觉得我需要将查询结果放入进入一个循环,然后存储到一个数组中,然后将文本框分配给该数组?
当然只显示table的最后一行。因为你正在经历一个循环,循环在最后一行结束。针对你的这种需求,我给你两种选择..
1。创建两个按钮 'Previous Lesson' 和 'Next Lesson',并在单击此按钮的同时在行中移动
在您的表单 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 事件上的代码与上面相同,跳过最后两行和其他 events/functions 并添加这些。
DataSet dSet = new System.Data.DataSet();
adapter.Fill(dSet, "Lessons");
Lessons = dSet.Tables["Lessons"];
dataGridView1.DataSource = Lessons;