将多个SQL查询结果返回到文本框

时间:2015-03-14 21:18:44

标签: c# sql-server winforms tsql ado.net

我目前有三张桌子,学生,课程,课程,课程和课程

使用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相关的最后一个值,我有一种感觉,我需要将查询的结果放入循环然后存储到数组中,然后将文本框分配给阵列

1 个答案:

答案 0 :(得分:0)

当然它只显示表格的最后一行。 Cauz你正在经历一个循环,循环在最后一行结束。对于你的要求,我会给你两个选择..

<强> 1 即可。创建两个按钮“上一课”和“下一课”,并在单击此按钮时移动行

enter image description here

在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上显示课程数据

enter image description here

与combo_DropDown事件相同的代码,跳过最后两行和其他事件/函数并添加它们。

  DataSet dSet = new System.Data.DataSet();
  adapter.Fill(dSet, "Lessons");
  Lessons = dSet.Tables["Lessons"];
  dataGridView1.DataSource = Lessons;