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