Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/277.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
使用while循环在C#和ado.net中插入多行_C# - Fatal编程技术网

使用while循环在C#和ado.net中插入多行

使用while循环在C#和ado.net中插入多行,c#,C#,我想为特定班级的教师分配课程: 我有一个变量,我希望所有变量都是循环的,并且在数据库中插入许多行,正如你们所看到的,我把一个从1到8的数字,我希望每组数字都在多行中插入数据库,而不是只插入数字1 int count = 0; string classid = DropDownList1.SelectedValue.ToString(); string period_1 = period1.Text; string time_1 = time1.Text; string weekday1 = "1

我想为特定班级的教师分配课程: 我有一个变量,我希望所有变量都是循环的,并且在数据库中插入许多行,正如你们所看到的,我把一个从1到8的数字,我希望每组数字都在多行中插入数据库,而不是只插入数字1

int count = 0;
string classid = DropDownList1.SelectedValue.ToString();
string period_1 = period1.Text;
string time_1 = time1.Text;
string weekday1 = "1";
string course_1 = Scourses1.SelectedValue.ToString();
string teach_1 = Steacher1.SelectedValue.ToString();
string time_2 = time2.Text;
string weekday2 = "2";
string course_2 = Scourses2.SelectedValue.ToString();
string teach_2 = Steacher2.SelectedValue.ToString();
string time_3 = time3.Text;
string weekday3 = "3";
string course_3 = Scourses3.SelectedValue.ToString();
string teach_3 = Steacher3.SelectedValue.ToString();
string time_4 = time4.Text;
string weekday4 = "4";
string course_4 = Scourses4.SelectedValue.ToString();
string teach_4 = Steacher4.SelectedValue.ToString();
string time_5 = time5.Text;
// string weekday5 = weekd5.Text;
string course_5 = Scourses5.SelectedValue.ToString();
string teach_5 = Steacher5.SelectedValue.ToString();
string period_2 = period2.Text;
string time_6 = time6.Text;
//string weekday6 = weekd1.Text;
string course_6 = Scourses6.SelectedValue.ToString();
string teach_6 = Steacher6.SelectedValue.ToString();
string time_7 = time7.Text;
//string weekday7 = weekd2.Text;
string course_7 = Scourses7.SelectedValue.ToString();
string teach_7 = Steacher7.SelectedValue.ToString();
string time_8 = time8.Text;
// string weekday8 = weekd3.Text;
string course_8 = Scourses8.SelectedValue.ToString();
string teach_8 = Steacher8.SelectedValue.ToString();
string time_9 = time9.Text;
string weekday9 = weekd4.Text;
string course_9 = Scourses9.SelectedValue.ToString();
string teach_9 = Steacher9.SelectedValue.ToString();
string time_10 = time10.Text;
string weekday10 = weekd5.Text;
string course_10 = Scourses10.SelectedValue.ToString();
string teach_10 = Steacher10.SelectedValue.ToString();

//and the query to insert into database is :
string query = "INSERT INTO dbo.teacher_classes (period, weekday, course, teach_id, time, class_id) " +
               "VALUES (@Period, @Weekday, @Course, @Teach_id, @Time, @Class) ";

SqlCommand cmd = new SqlCommand(query, con);
cmd.Parameters.AddWithValue("@Period", period_1);
cmd.Parameters.AddWithValue("@Weekday", weekday1);
cmd.Parameters.AddWithValue("@Course", course_1);
cmd.Parameters.AddWithValue("@Teach_id", teach_1);
cmd.Parameters.AddWithValue("@Time", time_1);
cmd.Parameters.AddWithValue("@Class", classid);
cmd.Parameters.Add("@ERROR", SqlDbType.Char, 500);
cmd.Parameters["@ERROR"].Direction = ParameterDirection.Output;
count = cmd.ExecuteNonQuery();

con.Close();

//the only variables inserted is:
string classid = DropDownList1.SelectedValue.ToString();
string period_1 = period1.Text;
string time_1 = time1.Text;
string weekday1 = "1";
string course_1 = Scourses1.SelectedValue.ToString();
string teach_1 = Steacher1.SelectedValue.ToString();

我想将它们作为一个while循环插入到许多行中,这是?

首先定义一个类来包含您的值(我们使用的是面向对象的语言,对吗?)

现在在代码中定义一个列表(MyLesson),在其中添加课程

public List<Lesson> myLessons = new List<Lesson>();
最后一步是循环查看课程列表并调用数据库的insert,但首先使用伪值创建insert中所需的所有参数,然后进入循环,分配真实值并执行查询

string query = "INSERT INTO dbo.teacher_classes (period, weekday, course, teach_id, " + 
               "time, class_id) VALUES (@Period, @Weekday, @Course, @Teach_id, @Time, @Class) ";
SqlCommand cmd = new SqlCommand(query, con);
cmd.Parameters.AddWithValue("@Period", "");
cmd.Parameters.AddWithValue("@Weekday", "");
cmd.Parameters.AddWithValue("@Course", 0);
cmd.Parameters.AddWithValue("@Teach_id", 0);
cmd.Parameters.AddWithValue("@Time", "");
cmd.Parameters.AddWithValue("@Class", 0);
cmd.Parameters.Add("@ERROR", SqlDbType.Char, 500);
cmd.Parameters["@ERROR"].Direction = ParameterDirection.Output;

foreach(Lesson aLesson in myLessons)
{
   cmd["@Period"].Value = aLesson.Period;
   cmd["@Weekday"].Value = aLesson.Weekday;
   cmd["@Course"].Value = aLesson.CourseID;
   cmd["@Teach_id"].Value = aLesson.TeacherID;
   cmd["@Time"].Value = aLesson.StartTime;
   cmd["@Class"].Value = aLesson.ClassID;
   count = cmd.ExecuteNonQuery();
}
请注意,这是伪代码,只是为了给您指明要遵循的方向。

这取决于您将其呈现为工作代码。

首先定义一个类来包含您的值(我们使用的是面向对象的语言,对吗?)

现在在代码中定义一个列表(MyLesson),在其中添加课程

public List<Lesson> myLessons = new List<Lesson>();
最后一步是循环查看课程列表并调用数据库的insert,但首先使用伪值创建insert中所需的所有参数,然后进入循环,分配真实值并执行查询

string query = "INSERT INTO dbo.teacher_classes (period, weekday, course, teach_id, " + 
               "time, class_id) VALUES (@Period, @Weekday, @Course, @Teach_id, @Time, @Class) ";
SqlCommand cmd = new SqlCommand(query, con);
cmd.Parameters.AddWithValue("@Period", "");
cmd.Parameters.AddWithValue("@Weekday", "");
cmd.Parameters.AddWithValue("@Course", 0);
cmd.Parameters.AddWithValue("@Teach_id", 0);
cmd.Parameters.AddWithValue("@Time", "");
cmd.Parameters.AddWithValue("@Class", 0);
cmd.Parameters.Add("@ERROR", SqlDbType.Char, 500);
cmd.Parameters["@ERROR"].Direction = ParameterDirection.Output;

foreach(Lesson aLesson in myLessons)
{
   cmd["@Period"].Value = aLesson.Period;
   cmd["@Weekday"].Value = aLesson.Weekday;
   cmd["@Course"].Value = aLesson.CourseID;
   cmd["@Teach_id"].Value = aLesson.TeacherID;
   cmd["@Time"].Value = aLesson.StartTime;
   cmd["@Class"].Value = aLesson.ClassID;
   count = cmd.ExecuteNonQuery();
}
请注意,这是伪代码,只是为了给您指明要遵循的方向。

这取决于您如何将其呈现为工作代码。

定义一个包含您的值的类,将该类的一个实例添加到该类的列表中,循环列表实例,并为每个实例调用insertI,这对c#来说是新的,但并不完全了解其中的所有内容,我会尽量照你说的做,但我不确定写得对不对。感谢Steve对您的评论在一个示例中展示一个伪代码以适应您的需求定义一个类来包含您的值,将该类的一个实例添加到该类的列表中,循环列表实例,并为每个实例调用insertI,这是c#的新特性,但并不完全了解其中的所有内容,我会尽量照你说的做,但我不确定写得对不对。感谢Steve的评论通过一个示例展示一个伪代码以适应您的要求谢谢Steve我将尝试使用您漂亮的答案,我希望我能以正确的方式完成它..修复一个小错误(EndTime不存在,它是下一个块的时间)我明白了,别担心,兄弟。代码和我一起工作,循环工作,但它在第一个块上循环,第一个块插入了很多次,另一个没有插入,可能是我做错了,或者需要在代码中添加一些东西。谢谢你的耐心和支持。谢谢史蒂夫,我会尝试使用你漂亮的答案,我希望我能以正确的方式完成它。修复一个小错误(EndTime不存在,它是下一个块的时间)我明白了,别担心,兄弟。代码和我一起工作,循环工作,但是它在第一个块上循环,第一个块插入了很多次,另一个没有插入,可能是我错了,或者需要在代码上添加一些东西。谢谢你的耐心和支持