C#使用Google课堂API读取学生列表并写入SQL Server

问题描述

我为小学编写了一个控制台应用程序,它将从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 (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...