복붙노트

[SQL] 데이터베이스 오류 : 행 위치에 없습니다 0

SQL

데이터베이스 오류 : 행 위치에 없습니다 0

이 질문은 다시 몇 달을 요청했다 생각하지만 난 내 상황이 다르다과 같은 규칙이 적용되지 않을 수도 있습니다 생각합니다.

같은 오류가 팝업 것을 매번 나는이 방법을 실행합니다. 만약 위치 0에서 어떤 로우가 없다 [1] 또는 [15]로 변화 I [0]; [1] 등이 평균 내 데이터베이스 밤은도 연결 수에서 어떤 행은 없다? 나는 문이 행에도이 있는지 확인하기 위해 확인하는 경우 어떤 종류를 작성해야?

    public bool UpdateOrderToShipped(string order)
{
    orderNumber = order;
    string batch = ConfigurationManager.AppSettings["SuccessfulOrderBatch"];
    string statement = "UPDATE SOP10100 SET BACHNUMB = '"+ batch +"' WHERE SOPNUMBE = @SOPNUMBE";
    SqlCommand comm = new SqlCommand(statement, connectionPCI);
    comm.Parameters.Add("SOPNUMBE", orderNumber);
    try
    {
        comm.Connection.Open();
        comm.ExecuteNonQuery();
        comm.Connection.Close();
    }
    catch(Exception e)
    {
        comm.Connection.Close();
        KaplanFTP.errorMsg = "Database error: " + e.Message;
    }

    statement = "SELECT SOPTYPE FROM SOP10100 WHERE SOPNUMBE = @SOPNUMBE";
    comm.CommandText = statement;
    SqlDataAdapter da = new SqlDataAdapter(comm);
    DataTable dt = new DataTable();
    da.Fill(dt);
    soptype = dt.Rows[0]["SOPTYPE"].ToString();    //errror here

    return true;
}

해결법

  1. ==============================

    1.이것은 어떤 결과가 쿼리에서 반환되지 않았 음을 의미합니다 ... 매우 간단합니다. 당신은 항상 코드 방어가와 행 배열이 그것으로 색인을 시도하기 전에 어떤 항목이 있는지 확인합니다. 뭔가 같은 :

    이것은 어떤 결과가 쿼리에서 반환되지 않았 음을 의미합니다 ... 매우 간단합니다. 당신은 항상 코드 방어가와 행 배열이 그것으로 색인을 시도하기 전에 어떤 항목이 있는지 확인합니다. 뭔가 같은 :

    if (dt.Rows.Count > 0)
        soptype = dt.Rows[0]["SOPTYPE"].ToString();
    else
        somethingWentWrong();
    
  2. ==============================

    2.당신은 테이블의 데이터가있을 수 있지만 첫 번째 쿼리 후 연결이 닫히고 생각합니다. 연결을 다시 열어보십시오. 또한 당신은 좋은 방법이 아닙니다 첫 번째 SQL 쿼리에서 문자열 연결이 있습니다. 단지 더 나은 코드를 대신 시도 ... 캐치 블록을 사용해보십시오. 조엘 제안하고, 수표를 사용

    당신은 테이블의 데이터가있을 수 있지만 첫 번째 쿼리 후 연결이 닫히고 생각합니다. 연결을 다시 열어보십시오. 또한 당신은 좋은 방법이 아닙니다 첫 번째 SQL 쿼리에서 문자열 연결이 있습니다. 단지 더 나은 코드를 대신 시도 ... 캐치 블록을 사용해보십시오. 조엘 제안하고, 수표를 사용

  3. ==============================

    3.

    for (int i = 0; i <= dt.rows.count; i++)
    {
        // do something till rows in DT
    }
    
  4. ==============================

    4.저도 같은 문제가 있었다, 나는 나의 첫 번째 열은 정수 기반되지 않았 음을 깨달았다. 내가 편집 그래서 첫 번째 저도 같은 오류에 직면했다.

    저도 같은 문제가 있었다, 나는 나의 첫 번째 열은 정수 기반되지 않았 음을 깨달았다. 내가 편집 그래서 첫 번째 저도 같은 오류에 직면했다.

    그래서, 내 제안은 첫 번째 열 편집을하거나하지 않거나 첫 번째 열은 편집 아무것도없는 경우에 ID 열합니다.

  5. from https://stackoverflow.com/questions/7795066/database-error-there-is-no-row-at-position-0 by cc-by-sa and MIT license