首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在不覆盖数据的情况下添加到表格单元格中?

如何在不覆盖数据的情况下添加到表格单元格中?
EN

Stack Overflow用户
提问于 2015-02-11 13:07:14
回答 2查看 73关注 0票数 0

我正在用C#构建一个实现SQL Server2012的图形用户界面评分系统。当程序开始时,有一些选项卡控制程序的不同方面,例如添加、更新或删除记录;查看所有或单个学生的成绩GridView;然后查看所有学生记录。现在,我在一个名为StudentGrades的表中的一个单元格中包含了一个学生的所有成绩,它看起来像这样:

代码语言:javascript
复制
Student ID     Student Grades
00001          100, 58, 72, 10, 25, 50, 93, 74, 30
00002          10, 40
00003          88, 60, 20, 45

正如你所看到的,不是每个学生都有相同数量的成绩,所以我认为让所有的成绩占据一个单元格要比有一个包含空单元格的表格容易得多。

我试图完成的是,当用户更新学生记录并添加新成绩时,我希望程序查询数据库并从StudentGrades表中选择StudentGrades,然后返回值。返回后,我希望将新成绩添加到结果中,然后使用新脚本更新数据库。有点像这样:

代码语言:javascript
复制
string select = "select StudentGrades from StudentGrades where Student_ID = inputStudentID";
SqlCommand command = new SqlCommand(select, conn);
SqlDataReader reader = command.ExecuteReader();
string temp = reader;
temp += "," + newStudentGrade;
//Script to update table here

这在Sql Server2012和C#中是否可行?在查询表之后,阅读器会持有什么值?

EN

回答 2

Stack Overflow用户

发布于 2015-02-11 14:22:32

只需直接更新数据库(如果没有问题),如下所示:

代码语言:javascript
复制
UPDATE StudentGrades
SET [Student Grades] = [Student Grades] + @newgrade  --do concatenation
WHERE Student_ID = @inputStudentID

并通过"," + newStudentGrade传递参数@newgrade

票数 0
EN

Stack Overflow用户

发布于 2015-02-11 14:30:55

是啊,这真是个坏主意。您应该有另一个带有StudentID外键的名为StudentGrade的表,并且每个年级都有一行,这样您就可以正常地插入/更新/删除它们。然后添加一个等级就像INSERT INTO StudentGrade(StudentID, Grade) VALUES(x, y)一样简单。

数据库列应该是原子的-每个字段中应该只有一段数据。忽视这条规则会导致痛苦和痛苦。您正在花费时间尝试编写更新脚本而不是简单的INSERT,这是这种情况的第一个症状;从现在开始,情况会变得更糟。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28446986

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档