问题描述
我为小学编写了一个控制台应用程序,它将从Google课堂中读取课程,学生,课程等信息,并将其写入我们的sql Server数据库。这是我第一次使用API,对C#的经验很少。该程序成功运行,但是需要很长时间(超过一个小时)。我认为可能是因为它一次将一条记录写入sql服务器。
C#是否可以更改代码,以便在发出每个请求时,它会将所有检索到的所有记录一次保存到临时表中,然后我可以为每次检索编写所有记录一个INSERT语句到sql Server? (或者也许有更好的方法?)
作为示例,我粘贴了下面处理学生的代码部分。请注意,它一次最多可检索30名学生,因为这是允许的最大学生人数。并且sql_students
参数化的sql语句是在代码的前面构建的。
任何帮助将不胜感激。
// ============================================= ====================== //转移学生
CoursesResource.StudentsResource.ListRequest RequestStudents = service.Courses.Students.List(course.Id);
RequestStudents.PageSize = 30;
// use Pagetoken and NextPagetoken to process all pages results
do
{
ListStudentsResponse ResponseStudents = RequestStudents.Execute();
if (ResponseStudents.Students != null && ResponseStudents.Students.Count > 0)
{
foreach (var student in ResponseStudents.Students)
{
// write the record to sql database
try
{
using (sqlCommand command = new sqlCommand(sql_students,connection))
{
command.Parameters.AddWithValue("@CourseId",CourseId);
command.Parameters.AddWithValue("@StudentUserID",student.UserId ?? string.Empty);
command.Parameters.AddWithValue("@StudentFirstName",student.Profile.Name.Givenname ?? string.Empty);
command.Parameters.AddWithValue("@StudentLastName",student.Profile.Name.FamilyName ?? string.Empty);
command.Parameters.AddWithValue("@StudentEmailAddress",student.Profile.EmailAddress ?? string.Empty);
int rowsAffected = command.ExecuteNonQuery();
}
}
catch (sqlException e)
{
Console.WriteLine(e.ToString());
}
}
// Get next page token
RequestStudents.Pagetoken = ResponseStudents.NextPagetoken;
}
} while (!string.IsNullOrEmpty(RequestStudents.Pagetoken));
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)