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;