연결이 닫히지 않았습니다. 연결의 현재 상태가 열려 있습니다. C # 오류

제다이 아 블라 자

gridview에서 2 개 이상의 값을 저장할 때이 오류가 발생합니다.

연결이 닫히지 않았습니다. 연결의 현재 상태가 열려 있습니다.

그러나 프로세스가 진행되고 데이터를 저장하고 업데이트합니다. 이 오류를 어떻게 제거 할 수 있습니까?

내 코드는 다음과 같습니다.

for(int i = 0; i < gvModal.Rows.Count; i++)
{ 
    string dateA = DateTime.Now.ToString("yyyy-MM-dd");

    Utility u = new Utility();
    string conn = u.connect();

    Label type = (Label)gvModal.Rows[i].Cells[1].FindControl("lbltype");
    Label model = (Label)gvModal.Rows[i].Cells[2].FindControl("lblModel");
    Label quantity = (Label)gvModal.Rows[i].Cells[3].FindControl("lblQuan");
    Label unit = (Label)gvModal.Rows[i].Cells[4].FindControl("lblUnit");
    int bal = Convert.ToInt32(gvModal.Rows[i].Cells[4].Text);
    int forIssue = 0;
    int forPO = 0;

    if (bal != 0)
    {
        forIssue = 1;
        forPO = 0;
    }
    else
    {
        forIssue = 0;
        forPO = 1;
    }

    SqlConnection connUser = new SqlConnection(conn);
    SqlCommand read = connUser.CreateCommand();

    string query = "INSERT INTO Mosef_Alert values (@Mosef_No, @Branch, @BU, @Dept, @Section, @Requisitioner, @Accepted, @Date_Accepted, @Reason, @MOSEF_Date, @type, @model, @quantity, @unit)";

    connUser.Open();
    read.CommandText = query;

    read.Parameters.Add(new SqlParameter("@Mosef_No", transIDs));
    read.Parameters.Add(new SqlParameter("@Branch", branch));
    read.Parameters.Add(new SqlParameter("@BU", bu));
    read.Parameters.Add(new SqlParameter("@Dept", dept));
    read.Parameters.Add(new SqlParameter("@Section", sec));
    read.Parameters.Add(new SqlParameter("@Requisitioner", requisitioner));
    read.Parameters.Add(new SqlParameter("@Accepted", accept));
    read.Parameters.Add(new SqlParameter("@Date_Accepted", dateA));
    read.Parameters.Add(new SqlParameter("@Reason", reason));
    read.Parameters.Add(new SqlParameter("@MOSEF_Date", lblDateFiled.Text));
    read.Parameters.Add(new SqlParameter("@type", type.Text));
    read.Parameters.Add(new SqlParameter("@model", model.Text));
    read.Parameters.Add(new SqlParameter("@quantity", quantity.Text));
    read.Parameters.Add(new SqlParameter("@unit", unit.Text));
    read.Parameters.Add(new SqlParameter("@For_PO", forPO));
    read.Parameters.Add(new SqlParameter("@For_Issuance", forIssue));

    read.ExecuteNonQuery();

    read.Parameters.Clear();
}

ExecuteUpdate(accept);
UpdateStatus();

System.Text.StringBuilder sb = new System.Text.StringBuilder();
sb.Append(@"<script type ='text/javascript'>");
sb.Append("alert('Records Updated');");
sb.Append("$('#editModal').modal('hide');");
sb.Append(@"</script>");
ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "EditHideModalScript", sb.ToString(), false);
}

public void UpdateStatus()
{
        Utility u = new Utility();
        string conn = u.connect();
        SqlConnection connUser = new SqlConnection(conn);
        SqlCommand read = connUser.CreateCommand();

        for(int i = 0; i < gvModal.Rows.Count; i++)
        {
            Label ItemID = (Label)gvModal.Rows[i].Cells[1].FindControl("lblID");
            Label stat = (Label)gvModal.Rows[i].Cells[8].FindControl("ItemStatus");
            int balance = Convert.ToInt32(gvModal.Rows[i].Cells[4].Text);
            string status;

            if(balance != 0)
            {
                status = "For Issuance";
            }
            else
            {
                status = "For PO";
            }

            string upd = "UPDATE ItemTransaction SET ItemStatus = '" + status +"' WHERE ID = '"+ ItemID.Text +"'";

            connUser.Open();
            read.CommandText = upd;

            read.Parameters.Clear();
            read.ExecuteNonQuery();
        }
    }
    public void ExecuteUpdate(int stat)
    {
        string upStat = null;
        if (stat == 1)
        {
            upStat = "Accepted";
        }
        else
        {
            upStat = "Denied";
        }
        string id = transID.Text;
        Utility u = new Utility();
        string conn = u.connect();
        SqlConnection connUser = new SqlConnection(conn);
        string up = "UPDATE MosefTransaction SET TransStatus = '"+ upStat +"' WHERE TransactionID = '"+ id +"'";
        connUser.Open();
        SqlCommand cm = new SqlCommand(up, connUser);
        //cm.Parameters.AddWithValue("@ID", id);
        //cm.Parameters.AddWithValue("@TransStatus", upStat);
        cm.Parameters.Clear();
        cm.ExecuteNonQuery();

        connUser.Close();
    }
수지스 카리 베릴

먼저 일반 텍스트 쿼리가 SqlInjection에 대한 넓은 문을 엽니 다 . 따라서 매개 변수화 된 쿼리를 사용하십시오. 이제 코드를 살펴 보겠습니다. 문제는 UpdateStatus메서드에 있습니다. 반복하는 동안 연결을 열고 닫지 않고 그대로 두었으므로 다음 반복에서 연결을 다시 열려고하면 오류가 발생합니다. 여러 가지 방법으로이를 피할 수 있습니다.

  1. 다음을 사용하여 각 반복에서 연결을 닫습니다. connUser.Close()
  2. ConnectionStateEnumeration을 사용 하여 새 연결을 열기 전에 연결 상태를 확인할 수 있습니다 . 상태가 열려 있지 않을 때만 엽니 다.

다음 코드를 사용하여 수행 할 수 있습니다.

if (connUser.State != ConnectionState.Open)
    connUser.Open();

3. 루프 외부에서 연결을 열고 루프 전체에서 동일한 방법을 사용합니다. 쿼리를 실행 한 후 각 반복에서 매개 변수를 지 웁니다.

예를 들어 코드를 고려하십시오.

using (SqlConnection connUser = new SqlConnection(conn))
{
    string upd = "UPDATE ItemTransaction SET ItemStatus = @status WHERE ID = @id";
    connUser.Open();
    SqlCommand commandSQL = connUser.CreateCommand();
    for (int i = 0; i < gvModal.Rows.Count; i++)
    {
        // Get values here using your code
        commandSQL.Parameters.Add("@status", SqlDbType.VarChar).Value = status;
        commandSQL.Parameters.Add("@id", SqlDbType.VarChar).Value = ItemID.Text;
        commandSQL.ExecuteNonQuery();
        commandSQL.Parameters.Clear();                   
    }
}

참고 : 가장 좋은 옵션은 세 번째 옵션입니다. 다른 상황에서 도움이 될 나머지 참고 사항은 다음과 같습니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

연결이 닫히지 않았습니다. 연결의 현재 상태가 열려 있습니다. c #

분류에서Dev

연결이 닫히지 않았습니다. 연결의 현재 상태는 Open입니다.

분류에서Dev

나는 그것을 해결하기 위해 충분히 노력했지만 할 수 없습니다. 제발 도와주세요 연결이 끊어지지 않았습니다. 연결의 현재 상태가 열려 있습니다.

분류에서Dev

System.InvalidOperationException : ExecuteReader에는 열려 있고 사용 가능한 연결이 필요합니다. 연결의 현재 상태가 닫혔습니다.

분류에서Dev

ExecuteReader에는 열려 있고 사용 가능한 연결이 필요합니다. 현재 상태가 닫혀 있습니다.

분류에서Dev

ExecuteReader에는 열려 있고 사용 가능한 연결이 필요합니다. 연결의 현재 상태는 연결 중입니다. 실행 리더에서

분류에서Dev

Executenonquery에는 열려 있고 사용 가능한 연결이 필요합니다. 연결 현재 상태가 닫힘

분류에서Dev

SqlCommand 간의 연결이 닫히지 않았습니다.

분류에서Dev

C # mysql 연결 오류 "개체 참조가 개체의 인스턴스로 설정되지 않았습니다."

분류에서Dev

C # mysql 연결 오류 "개체 참조가 개체의 인스턴스로 설정되지 않았습니다."

분류에서Dev

c # .net 오류 : 먼저 닫아야하는이 명령과 연결된 열려있는 DataReader가 이미 있습니다.

분류에서Dev

연결이 닫히지 않습니다

분류에서Dev

ExecuteScalar 호출시 연결 속성이 초기화되지 않았습니다. 오류가 발생했습니다.

분류에서Dev

2020 년 12 월 상태- '배포 ID가 현재 프로젝트와 연결되어 있지 않습니다'

분류에서Dev

Gmail SMTP 오류 및 오 탐지 : "연결하려는 이메일 계정이 존재하지 않습니다."

분류에서Dev

cshtml c # 먼저 닫아야하는이 연결과 연결된 열린 DataReader가 이미 있습니다.

분류에서Dev

이 오류가 발생하는 이유 { "개체의 현재 상태로 인해 작업이 유효하지 않습니다."} C #

분류에서Dev

오류 : 먼저 닫아야하는이 명령과 연결된 열린 DataReader가 이미 있습니다.

분류에서Dev

Python3 asyncio 동시 HTTP 가져 오기 요청으로 연결이 닫히지 않습니다.

분류에서Dev

C # Npgsql 연결 오류 : Npgsql.NpgsqlConnection이 System.Collections.IEnumerator 인터페이스를 구현하지 않습니다.

분류에서Dev

Teamviewer 연결 오류 : "파트너가 라우터에 연결하지 않았습니다", "WaitforConnectFailed"

분류에서Dev

RecyclerView Android 오류 : E / RecyclerView : 어댑터가 연결되지 않았습니다. 레이아웃 건너 뛰기

분류에서Dev

데이터베이스가 연결되지 않았습니다. 무엇과 연결될 수 있습니까?

분류에서Dev

"레일이 현재 설치되지 않았습니다."오류

분류에서Dev

SQL 연결 문자열 오류 : 개체 참조가 개체의 인스턴스로 설정되지 않았습니다.

분류에서Dev

ExecuteReader : 연결 속성이 초기화되지 않았습니다. 오류

분류에서Dev

Quickblox 오류 : 연결되지 않았고 권한이 없습니다.

분류에서Dev

textArea의 텍스트가 연결되지 않았습니다.

분류에서Dev

Redis 연결 인덱스가 정의되지 않았습니다.

Related 관련 기사

  1. 1

    연결이 닫히지 않았습니다. 연결의 현재 상태가 열려 있습니다. c #

  2. 2

    연결이 닫히지 않았습니다. 연결의 현재 상태는 Open입니다.

  3. 3

    나는 그것을 해결하기 위해 충분히 노력했지만 할 수 없습니다. 제발 도와주세요 연결이 끊어지지 않았습니다. 연결의 현재 상태가 열려 있습니다.

  4. 4

    System.InvalidOperationException : ExecuteReader에는 열려 있고 사용 가능한 연결이 필요합니다. 연결의 현재 상태가 닫혔습니다.

  5. 5

    ExecuteReader에는 열려 있고 사용 가능한 연결이 필요합니다. 현재 상태가 닫혀 있습니다.

  6. 6

    ExecuteReader에는 열려 있고 사용 가능한 연결이 필요합니다. 연결의 현재 상태는 연결 중입니다. 실행 리더에서

  7. 7

    Executenonquery에는 열려 있고 사용 가능한 연결이 필요합니다. 연결 현재 상태가 닫힘

  8. 8

    SqlCommand 간의 연결이 닫히지 않았습니다.

  9. 9

    C # mysql 연결 오류 "개체 참조가 개체의 인스턴스로 설정되지 않았습니다."

  10. 10

    C # mysql 연결 오류 "개체 참조가 개체의 인스턴스로 설정되지 않았습니다."

  11. 11

    c # .net 오류 : 먼저 닫아야하는이 명령과 연결된 열려있는 DataReader가 이미 있습니다.

  12. 12

    연결이 닫히지 않습니다

  13. 13

    ExecuteScalar 호출시 연결 속성이 초기화되지 않았습니다. 오류가 발생했습니다.

  14. 14

    2020 년 12 월 상태- '배포 ID가 현재 프로젝트와 연결되어 있지 않습니다'

  15. 15

    Gmail SMTP 오류 및 오 탐지 : "연결하려는 이메일 계정이 존재하지 않습니다."

  16. 16

    cshtml c # 먼저 닫아야하는이 연결과 연결된 열린 DataReader가 이미 있습니다.

  17. 17

    이 오류가 발생하는 이유 { "개체의 현재 상태로 인해 작업이 유효하지 않습니다."} C #

  18. 18

    오류 : 먼저 닫아야하는이 명령과 연결된 열린 DataReader가 이미 있습니다.

  19. 19

    Python3 asyncio 동시 HTTP 가져 오기 요청으로 연결이 닫히지 않습니다.

  20. 20

    C # Npgsql 연결 오류 : Npgsql.NpgsqlConnection이 System.Collections.IEnumerator 인터페이스를 구현하지 않습니다.

  21. 21

    Teamviewer 연결 오류 : "파트너가 라우터에 연결하지 않았습니다", "WaitforConnectFailed"

  22. 22

    RecyclerView Android 오류 : E / RecyclerView : 어댑터가 연결되지 않았습니다. 레이아웃 건너 뛰기

  23. 23

    데이터베이스가 연결되지 않았습니다. 무엇과 연결될 수 있습니까?

  24. 24

    "레일이 현재 설치되지 않았습니다."오류

  25. 25

    SQL 연결 문자열 오류 : 개체 참조가 개체의 인스턴스로 설정되지 않았습니다.

  26. 26

    ExecuteReader : 연결 속성이 초기화되지 않았습니다. 오류

  27. 27

    Quickblox 오류 : 연결되지 않았고 권한이 없습니다.

  28. 28

    textArea의 텍스트가 연결되지 않았습니다.

  29. 29

    Redis 연결 인덱스가 정의되지 않았습니다.

뜨겁다태그

보관