Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将字符串数组保存到SQL列_C#_Sql_Sql Server_Session_Visual Studio 2012 - Fatal编程技术网

C# 将字符串数组保存到SQL列

C# 将字符串数组保存到SQL列,c#,sql,sql-server,session,visual-studio-2012,C#,Sql,Sql Server,Session,Visual Studio 2012,我想在SQL数据库中为学校项目创建一个“会话”表。每届会议应包括: 会话ID 讲师姓名 时间和日期 模块名 课程名称 学生证列表 学生状态列表(出席、缺席、迟到) 我怎么能代表这样一件事 是否最好创建一个表来表示所有会话,其中每个会话都是一行,并且在每列中都有一个字符串数组来表示学生的姓名、ID和状态 或 为每个新会话创建一个新表 什么更好,请简要说明如何做 请记住,我需要从C#windows应用程序中插入/删除/更新/查看每个表,最大预期会话数仅为100 此外,我正在使用SQL Serve

我想在SQL数据库中为学校项目创建一个“会话”表。每届会议应包括:

  • 会话ID
  • 讲师姓名
  • 时间和日期
  • 模块名
  • 课程名称
  • 学生证列表
  • 学生状态列表(出席、缺席、迟到)
我怎么能代表这样一件事

是否最好创建一个表来表示所有会话,其中每个会话都是一行,并且在每列中都有一个字符串数组来表示学生的姓名、ID和状态

为每个新会话创建一个新表

什么更好,请简要说明如何做

请记住,我需要从C#windows应用程序中插入/删除/更新/查看每个表,最大预期会话数仅为100

此外,我正在使用SQL Server 2012和一个用Visual Studio 2012开发的C#windows应用程序


谢谢

我想你应该有三张桌子:

学生

------------------------------------
| StudentID | FirstName | LastName |
|-----------|-----------|----------|
|   4456    |   John    |   Doe    |
|   6678    |   Billy   |   Bob    |
------------------------------------
---------------------------------------------------------------------
| SessionID | Lecturer | DateTime |     Module       |    Course    |
|-----------|----------|----------|------------------|--------------|
|    1      |  Mr.Joe  | 524523461| Natural Sciences | Oceanography |
---------------------------------------------------------------------
这里StudentID是主键

会话

------------------------------------
| StudentID | FirstName | LastName |
|-----------|-----------|----------|
|   4456    |   John    |   Doe    |
|   6678    |   Billy   |   Bob    |
------------------------------------
---------------------------------------------------------------------
| SessionID | Lecturer | DateTime |     Module       |    Course    |
|-----------|----------|----------|------------------|--------------|
|    1      |  Mr.Joe  | 524523461| Natural Sciences | Oceanography |
---------------------------------------------------------------------
这里dateTime是Unix时间戳,SessionId是主键

会期趋势

-------------------------------------
| SessionID | StudentID |  Status   |
|-----------|-----------|-----------|
|     1     |    4456   |  'Late'   |
|     1     |    6678   | 'Present' |
-------------------------------------
这里SessionID和StudentID都是主键

原因

在这里,您不需要解析所有考勤和状态列表。查询可能会变得更大一些,但它将为您节省大量解析代码

查询示例:

SELECT SessionID FROM SessionAttendance WHERE StudentID  = (SELECT StudentID FROM Students WHERE FirstName = 'John' AND LastName = 'Doe') AND Status = 'Late';
它将获得John Doe迟到的所有课程。很简单,对吧

其他评论

------------------------------------
| StudentID | FirstName | LastName |
|-----------|-----------|----------|
|   4456    |   John    |   Doe    |
|   6678    |   Billy   |   Bob    |
------------------------------------
---------------------------------------------------------------------
| SessionID | Lecturer | DateTime |     Module       |    Course    |
|-----------|----------|----------|------------------|--------------|
|    1      |  Mr.Joe  | 524523461| Natural Sciences | Oceanography |
---------------------------------------------------------------------
  • 不能在数据库列中存储信息数组。信息技术 必须是以某种方式分隔的列表

  • 在你的申请表中,我建议你始终保留学生ID 它的FirstName和LastName,因为它将使查询更容易,并且 将保持名称本地化(以便您可以一次更改它) 地点和地点将在其他任何地方发生变化)


  • 没问题,如果答案有用,请投票。那太好了。谢谢@拳击手