Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/grails/5.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# 如何将方法中的值存储到数据库中?_C# - Fatal编程技术网

C# 如何将方法中的值存储到数据库中?

C# 如何将方法中的值存储到数据库中?,c#,C#,我有一个方法,它从视图中获取选中的值(可以有2个或更多,值的名称为courseName),并将其存储在名为“SelectedCourses”的集合中。本例中的问题是,我不知道是应该将courseName值存储在RegisterTeacher表中,在该表中存储所有其他值,还是存储在名为Course的单独表中。以下是两个表: CREATE TABLE [dbo].[Courses] ( [courseName] NVARCHAR (MAX) NOT NULL, [SNTeacher] INT

我有一个方法,它从视图中获取选中的值(可以有2个或更多,值的名称为courseName),并将其存储在名为“SelectedCourses”的集合中。本例中的问题是,我不知道是应该将courseName值存储在RegisterTeacher表中,在该表中存储所有其他值,还是存储在名为Course的单独表中。以下是两个表:

CREATE TABLE [dbo].[Courses] (
[courseName] NVARCHAR (MAX) NOT NULL,
[SNTeacher]  INT            NOT NULL,
[education]  NVARCHAR (50)  NOT NULL,
[ClassID]    NVARCHAR (50)  NULL,
[courseID]   INT            NOT NULL,
PRIMARY KEY CLUSTERED ([courseID] ASC),
CONSTRAINT [FK_Courses_ToTable] FOREIGN KEY ([SNTeacher]) REFERENCES [dbo].[RegisterTeacher] ([SNTeacher])
))

这是表注册表教师:

 CREATE TABLE [dbo].[RegisterTeacher] (
[SNTeacher]  INT            NOT NULL,
[UserName]   NVARCHAR (10)  NOT NULL,
[pwd]        INT            NOT NULL,
[fullName]   NVARCHAR (MAX) NOT NULL,
[CourseName] NVARCHAR (MAX) NOT NULL,
[courseID]   INT            NULL,
[education]  NVARCHAR (50)  NULL,
PRIMARY KEY CLUSTERED ([SNTeacher] ASC),
CONSTRAINT [FK_RegisterTeacher_ToTable] FOREIGN KEY ([courseID]) REFERENCES [dbo].[Courses] ([courseID])
))

我的问题是如何存储SelectedCourses集合中的课程,如果我需要将它们存储在单独的表中,那么join语法在这种情况下是否有效?请提供任何帮助或建议。 这是将值存储到数据库中的方法:

   public void SaveTeacher(object param)
    {
   string connectionString = null;
        string sql = null;
        connectionString = "Data Source=(LocalDB)\\MSSQLLocalDB;AttachDbFilename=C:\\Users\\User\\Desktop\\BackupVersion\\LastAndFinalVersion\\DatabaseStudents.mdf;Integrated Security=True";
        using (SqlConnection con = new SqlConnection(connectionString))
        {
            sql = "Insert into RegisterTeacher(SNTeacher,UserName,pwd,fullName,CourseName,education)values(@SNTeacher,@_UserName,@pwd,@fullName,@courseName,@education)";
            con.Open();
            using (SqlCommand cmd = new SqlCommand(sql, con))
            {
                cmd.Parameters.AddWithValue("@SNTeacher", SNTeacher);
                cmd.Parameters.AddWithValue("@UserName", _UserName);
                cmd.Parameters.AddWithValue("@pwd", pwd);
                cmd.Parameters.AddWithValue("@fullName", fullName);
                SelectedCourses = new ObservableCollection<Cours>();
                foreach (var item in Courses)
                {

                    if (item.IsChecked)
                    {
                        SelectedCourses.Add(item);

                    }
                    cmd.Parameters.AddWithValue("@CourseName", courseName);
                    cmd.Parameters.AddWithValue("@education", education);
                    cmd.ExecuteNonQuery();
                    MessageBox.Show("Registration succesfull! ");
                }
            }
        }
    }
public void SaveTeacher(对象参数)
{
字符串连接字符串=null;
字符串sql=null;
connectionString=“数据源=(LocalDB)\\MSSQLLocalDB;AttachDbFilename=C:\\Users\\User\\Desktop\\BackupVersion\\LastAndFinalVersion\\DatabaseStudents.mdf;集成安全性=True”;
使用(SqlConnection con=newsqlconnection(connectionString))
{
sql=“在RegisterTeacher(SNTeacher,UserName,pwd,fullName,CourseName,education)中插入值(@SNTeacher,@_UserName,@pwd,@fullName,@CourseName,@education)”;
con.Open();
使用(SqlCommand cmd=newsqlcommand(sql,con))
{
cmd.Parameters.AddWithValue(“@SNTeacher”,SNTeacher);
cmd.Parameters.AddWithValue(“@UserName”,_UserName);
cmd.Parameters.AddWithValue(“@pwd”,pwd);
cmd.Parameters.AddWithValue(“@fullName”,fullName);
SelectedCourses=新的ObservableCollection();
foreach(课程中的var项目)
{
如果(项目已检查)
{
选择课程。添加(项目);
}
cmd.Parameters.AddWithValue(“@CourseName”,CourseName);
cmd.Parameters.AddWithValue(“@education”,education);
cmd.ExecuteNonQuery();
MessageBox.Show(“注册成功!”);
}
}
}
}

您需要一个连接表注册表TeacherToCourses,在其中保存教师id和课程idOk@Alexandru,我明白,但我是否必须为插入SelectedCourses值进行单独查询,还是在我加入两列的同一查询中进行查询?您应该为插入RegisterTeacherToCourses进行不同的查询,因为这是不同的功能。我建议您将查询移动到存储过程,以便它们可以重用,这样您就可以随时修改它们,而无需重新生成代码。明白了,@AlexandruPopa!谢谢你的帮助:)