Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/280.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/70.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#_Sql_Asp.net_Sql Server - Fatal编程技术网

C# 已经是一个开放的数据阅读器。火星将成为现实

C# 已经是一个开放的数据阅读器。火星将成为现实,c#,sql,asp.net,sql-server,C#,Sql,Asp.net,Sql Server,在ASP.NET中使用SQL时,在不同的命令和结果集之间来回切换时,我总是遇到这个问题。代码: foreach (string user in usernames) { command.CommandText = "select case system_role when 'Z' then 'none' else 'none' end as 'system_role', case institution_roles_pk1 when 1 then 'student' when 2 the

在ASP.NET中使用SQL时,在不同的命令和结果集之间来回切换时,我总是遇到这个问题。代码:

foreach (string user in usernames)
{
    command.CommandText = "select case system_role when 'Z' then 'none' else 'none' end as 'system_role', case institution_roles_pk1 when 1 then 'student' when 2 then 'faculty' end as 'institution_role',batch_uid,user_id,student_id as 'passwd',firstname,middlename,lastname,email,student_id,case row_status when 0 then 'ENABLED' when 2 then 'DISABLED' end as 'row_status' from users where user_id = '" + user + "'";

    SqlDataReader reader = command.ExecuteReader();

    if (reader.HasRows)
    {
        while (reader.Read())
        {
            file.WriteLine(user + "|" + status);

            if (overrideFramework == 0)
            {
               command.CommandText = "use sis_comparison_data insert into person_override values ('" + reader["system_role"].ToString() + "','" + reader["institution_role"].ToString() + "','" + reader["batch_uid"].ToString() + "','" + reader["user_id"].ToString() + "','" + reader["passwd"].ToString() + "','" + reader["firstname"].ToString() + "','" + reader["middlename"].ToString() + "','" + reader["lastname"].ToString() + "','" + reader["email"].ToString() + "','" + reader["student_id"].ToString() + "','" + overrideIndicator + "')";

               command.ExecuteNonQuery();
            }

            validPersonCounter++;

            using (StreamWriter historyFile = new StreamWriter(@"c:\bb_updates\history.txt", true))
            {
                historyFile.WriteLine(this.firstName + status.ToLower() + " user ID for " + user + ", SIS Integration Override: " + didOverride + ", Date: " + mn + "/" + dy + "/" + yy + " Time: " + DateTime.Now.ToString("h:mm:ss tt"));
            }
        }
    }
    else
    {
        invalidPersons.Add(user);
    }                                  
}
我的连接字符串具有
MultipleActiveResultSets=true已启用,我尝试在
命令之前添加一个close.ExecuteNonQuery()
,然后我得到了错误

读卡器关闭时读取的尝试无效


如果我将
reader.Close()
放在任何其他地方,我会得到已经打开的数据读取器错误。请告知。

您不应该重复使用
命令
对象。当您这样做时,您正在干扰来自
ExecuteReader
调用的结果。在
循环中创建一个新的
SqlCommand

您不应该重用
命令
对象。当您这样做时,您正在干扰来自
ExecuteReader
调用的结果。在
循环中创建一个新的
SqlCommand

您不应该重用
命令
对象。当您这样做时,您正在干扰来自
ExecuteReader
调用的结果。在
循环中创建一个新的
SqlCommand

您不应该重用
命令
对象。当您这样做时,您正在干扰来自
ExecuteReader
调用的结果。在
循环中创建一个新的
SqlCommand

请尝试以下操作。它正确地处理
读取器
,并且不重用
命令

 foreach (string user in usernames)
 {
     command.CommandText = "select case system_role when 'Z' then 'none' else 'none' end as 'system_role', case institution_roles_pk1 when 1 then 'student' when 2 then 'faculty' end as 'institution_role',batch_uid,user_id,student_id as 'passwd',firstname,middlename,lastname,email,student_id,case row_status when 0 then 'ENABLED' when 2 then 'DISABLED' end as 'row_status' from users where user_id = '" + user + "'";
     using (var reader = command.ExecuteReader())
     {
        if (reader.HasRows)
        {
            while (reader.Read())
            {
                file.WriteLine(user + "|" + status);
                if (overrideFramework == 0)
                {
                    var cmd = new SqlCommand();

                    cmd.CommandText = "use sis_comparison_data insert into person_override values ('" + reader["system_role"].ToString() + "','" + reader["institution_role"].ToString() + "','" + reader["batch_uid"].ToString() + "','" + reader["user_id"].ToString() + "','" + reader["passwd"].ToString() + "','" + reader["firstname"].ToString() + "','" + reader["middlename"].ToString() + "','" + reader["lastname"].ToString() + "','" + reader["email"].ToString() + "','" + reader["student_id"].ToString() + "','" + overrideIndicator + "')";

                    cmd.ExecuteNonQuery();
                }

                validPersonCounter++;

                using (StreamWriter historyFile = new StreamWriter(@"c:\bb_updates\history.txt", true))
                {
                    historyFile.WriteLine(this.firstName + status.ToLower() + " user ID for " + user + ", SIS Integration Override: " + didOverride + ", Date: " + mn + "/" + dy + "/" + yy + " Time: " + DateTime.Now.ToString("h:mm:ss tt"));
                }
            }

        }
        else
        {
            invalidPersons.Add(user);
        }  
     }
 }

请尝试以下方法。它正确地处理
读取器
,并且不重用
命令

 foreach (string user in usernames)
 {
     command.CommandText = "select case system_role when 'Z' then 'none' else 'none' end as 'system_role', case institution_roles_pk1 when 1 then 'student' when 2 then 'faculty' end as 'institution_role',batch_uid,user_id,student_id as 'passwd',firstname,middlename,lastname,email,student_id,case row_status when 0 then 'ENABLED' when 2 then 'DISABLED' end as 'row_status' from users where user_id = '" + user + "'";
     using (var reader = command.ExecuteReader())
     {
        if (reader.HasRows)
        {
            while (reader.Read())
            {
                file.WriteLine(user + "|" + status);
                if (overrideFramework == 0)
                {
                    var cmd = new SqlCommand();

                    cmd.CommandText = "use sis_comparison_data insert into person_override values ('" + reader["system_role"].ToString() + "','" + reader["institution_role"].ToString() + "','" + reader["batch_uid"].ToString() + "','" + reader["user_id"].ToString() + "','" + reader["passwd"].ToString() + "','" + reader["firstname"].ToString() + "','" + reader["middlename"].ToString() + "','" + reader["lastname"].ToString() + "','" + reader["email"].ToString() + "','" + reader["student_id"].ToString() + "','" + overrideIndicator + "')";

                    cmd.ExecuteNonQuery();
                }

                validPersonCounter++;

                using (StreamWriter historyFile = new StreamWriter(@"c:\bb_updates\history.txt", true))
                {
                    historyFile.WriteLine(this.firstName + status.ToLower() + " user ID for " + user + ", SIS Integration Override: " + didOverride + ", Date: " + mn + "/" + dy + "/" + yy + " Time: " + DateTime.Now.ToString("h:mm:ss tt"));
                }
            }

        }
        else
        {
            invalidPersons.Add(user);
        }  
     }
 }

请尝试以下方法。它正确地处理
读取器
,并且不重用
命令

 foreach (string user in usernames)
 {
     command.CommandText = "select case system_role when 'Z' then 'none' else 'none' end as 'system_role', case institution_roles_pk1 when 1 then 'student' when 2 then 'faculty' end as 'institution_role',batch_uid,user_id,student_id as 'passwd',firstname,middlename,lastname,email,student_id,case row_status when 0 then 'ENABLED' when 2 then 'DISABLED' end as 'row_status' from users where user_id = '" + user + "'";
     using (var reader = command.ExecuteReader())
     {
        if (reader.HasRows)
        {
            while (reader.Read())
            {
                file.WriteLine(user + "|" + status);
                if (overrideFramework == 0)
                {
                    var cmd = new SqlCommand();

                    cmd.CommandText = "use sis_comparison_data insert into person_override values ('" + reader["system_role"].ToString() + "','" + reader["institution_role"].ToString() + "','" + reader["batch_uid"].ToString() + "','" + reader["user_id"].ToString() + "','" + reader["passwd"].ToString() + "','" + reader["firstname"].ToString() + "','" + reader["middlename"].ToString() + "','" + reader["lastname"].ToString() + "','" + reader["email"].ToString() + "','" + reader["student_id"].ToString() + "','" + overrideIndicator + "')";

                    cmd.ExecuteNonQuery();
                }

                validPersonCounter++;

                using (StreamWriter historyFile = new StreamWriter(@"c:\bb_updates\history.txt", true))
                {
                    historyFile.WriteLine(this.firstName + status.ToLower() + " user ID for " + user + ", SIS Integration Override: " + didOverride + ", Date: " + mn + "/" + dy + "/" + yy + " Time: " + DateTime.Now.ToString("h:mm:ss tt"));
                }
            }

        }
        else
        {
            invalidPersons.Add(user);
        }  
     }
 }

请尝试以下方法。它正确地处理
读取器
,并且不重用
命令

 foreach (string user in usernames)
 {
     command.CommandText = "select case system_role when 'Z' then 'none' else 'none' end as 'system_role', case institution_roles_pk1 when 1 then 'student' when 2 then 'faculty' end as 'institution_role',batch_uid,user_id,student_id as 'passwd',firstname,middlename,lastname,email,student_id,case row_status when 0 then 'ENABLED' when 2 then 'DISABLED' end as 'row_status' from users where user_id = '" + user + "'";
     using (var reader = command.ExecuteReader())
     {
        if (reader.HasRows)
        {
            while (reader.Read())
            {
                file.WriteLine(user + "|" + status);
                if (overrideFramework == 0)
                {
                    var cmd = new SqlCommand();

                    cmd.CommandText = "use sis_comparison_data insert into person_override values ('" + reader["system_role"].ToString() + "','" + reader["institution_role"].ToString() + "','" + reader["batch_uid"].ToString() + "','" + reader["user_id"].ToString() + "','" + reader["passwd"].ToString() + "','" + reader["firstname"].ToString() + "','" + reader["middlename"].ToString() + "','" + reader["lastname"].ToString() + "','" + reader["email"].ToString() + "','" + reader["student_id"].ToString() + "','" + overrideIndicator + "')";

                    cmd.ExecuteNonQuery();
                }

                validPersonCounter++;

                using (StreamWriter historyFile = new StreamWriter(@"c:\bb_updates\history.txt", true))
                {
                    historyFile.WriteLine(this.firstName + status.ToLower() + " user ID for " + user + ", SIS Integration Override: " + didOverride + ", Date: " + mn + "/" + dy + "/" + yy + " Time: " + DateTime.Now.ToString("h:mm:ss tt"));
                }
            }

        }
        else
        {
            invalidPersons.Add(user);
        }  
     }
 }