【发布时间】:2015-05-17 05:45:01
【问题描述】:
我目前有三个表,Student、Less/Stu、Lessons 和 Class
使用 sql 查询,我设法使用组合框将类代码返回到文本框。现在我创建了一个 SELECT 查询,它应该返回与该类代码链接的课程中的值。由于有六节课与一个课程相关联,我希望这些行填充多个文本框。
课程代码课程名称课程学分...是课程表中的三列。所以应该有六行结果来填充文本框。我目前的代码
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 相关的最后一个值,我觉得我需要将查询结果放入一个循环中,然后存储到一个数组中,然后将文本框分配给数组?
【问题讨论】:
-
您的文本框只能显示一条记录(即数据读取器中的单个循环提取的数据),在您覆盖之前的文本的下一个循环中。所以,除非你对连接字符串没问题,否则你应该选择另一种适合这种情况的控件,(ListView 或 DataGridView)
-
在你的 sql 中使用参数。从头开始做:csharp-station.com/Tutorial/AdoDotNet/lesson06
-
我在测试中使用了 DataGridView,但我需要从该数据网格中选择数据并将其与学生信息相结合。因此,当学生注册到班级时(通过选择当前组合框)他们选择班级 ID,这反过来会选择所有课程并将学生 ID、课程 ID 和课程名称添加到 Less/Stud 表中。这可能吗?
-
在这种情况下,给定一个classid,您可以选择多行。所以你使用的文本框可以是一个列表框或其他东西,填充每一列。而不是你的 textbox.text = value,它应该是 listbox.add。
-
你确实有循环。您不能将数组分配给 TextBox。
标签: c# sql-server winforms tsql ado.net