IT

C#에서 데이터 리더로 행을 순환하려면 어떻게 해야 합니까?

itgroup 2023. 8. 21. 21:05
반응형

C#에서 데이터 리더로 행을 순환하려면 어떻게 해야 합니까?

사용할 수 있습니다.while(dr.Read()){...}내 표에 있는 모든 필드를 순환시킵니다. 첫 번째 행에서 모든 값을 검색하고, 두 번째 행에서...등등.

이런 테이블이 있다고 가정해 보겠습니다.

ID--------------Value1--------------Value2------------------Value3
1               hello               hello2                  hello3
2               hi1                  hi2                      hi3

먼저 얻고 싶은 것은hello,hello2그리고.hello3그런 다음 두 번째 행으로 이동하여 모든 값을 가져옵니다.

이것을 달성할 수 있는 방법이 있습니까?누가 내 말을 이해해 줬으면 좋겠어요.

정말 죄송합니다, 이제 해결되었습니다.제가 코딩을 잘못해서...

SqlDataReader도 마찬가지입니다.Read() 메서드는 해야 할 일을 수행합니다. 다시 한 번 실수는 제가 한 것입니다.

그게 바로 그 방법입니다.DataReader작동합니다. 데이터베이스 행을 한 번에 하나씩 읽도록 설계되었습니다.

while(reader.Read()) 
{
  var value1 = reader.GetValue(0); // On first iteration will be hello
  var value2 = reader.GetValue(1); // On first iteration will be hello2
  var value3 = reader.GetValue(2); // On first iteration will be hello3
}
int count = reader.FieldCount;
while(reader.Read()) {
    for(int i = 0 ; i < count ; i++) {
        Console.WriteLine(reader.GetValue(i));
    }
}

참고. 그리드가 여러 개인 경우 다음을 수행합니다.

do {
    int count = reader.FieldCount;
    while(reader.Read()) {
        for(int i = 0 ; i < count ; i++) {
            Console.WriteLine(reader.GetValue(i));
        }
    }
} while (reader.NextResult())

또는 이름으로 직접 열에 액세스할 수 있습니다.

while(dr.Read())
{
    string col1 = (string)dr["Value1"];
    string col2 = (string)dr["Value2"];
    string col3 = (string)dr["Value3"];
}

"전체 행"을 한 번에 가져올 방법은 없습니다. 행을 반복해서 표시해야 하며 각 행에 대해 각 열을 개별적으로 읽어야 합니다.

using(SqlDataReader rdr = cmd.ExecuteReader())
{
    while (rdr.Read())
    {
        string value1 = rdr.GetString(0);
        string value2 = rdr.GetString(1);
        string value3 = rdr.GetString(2);
    }
}

각 행에 대해 읽은 문자열을 사용하여 수행하는 작업은 전적으로 사용자에게 달려 있습니다. 사용자가 정의한 클래스로 저장할 수도 있습니다.

C#에서 데이터 리더로 행을 순환하려면 어떻게 해야 합니까?

IDataReader.Read()판독기를 결과 집합의 다음 행으로 이동합니다.

while(reader.Read()){
    /* do whatever you'd like to do for each row. */
}

따라서 루프의 각 반복에 대해 다른 루프를 수행합니다. 0에서reader.FieldCount와 콜reader.GetValue(i)각 분야별

더 큰 문제는 그 데이터를 보관하기 위해 어떤 종류의 구조를 사용할 것인가 하는 것입니다.

사실은Read결과 집합의 레코드에 대해 반복하는 메서드입니다.당신의 경우 - 테이블 위 행입니다.그래서 당신은 여전히 그것을 사용할 수 있습니다.

while (dr.Read())
{
    for (int i = 0; i < dr.FieldCount; i++)
    {
        subjob.Items.Add(dr[i]);
    }
}

한 열의 행을 읽다

데이터 테이블에 다음 열이 있다고 가정하고 이 코드를 사용해 보십시오.

DataTable dt =new DataTable();
txtTGrossWt.Text = dt.Compute("sum(fldGrossWeight)", "").ToString() == "" ? "0" : dt.Compute("sum(fldGrossWeight)", "").ToString();
txtTOtherWt.Text = dt.Compute("sum(fldOtherWeight)", "").ToString() == "" ? "0" : dt.Compute("sum(fldOtherWeight)", "").ToString();
txtTNetWt.Text = dt.Compute("sum(fldNetWeight)", "").ToString() == "" ? "0" : dt.Compute("sum(fldNetWeight)", "").ToString();
txtFinalValue.Text = dt.Compute("sum(fldValue)", "").ToString() == "" ? "0" : dt.Compute("sum(fldValue)", "").ToString();

언급URL : https://stackoverflow.com/questions/8370927/how-do-i-loop-through-rows-with-a-data-reader-in-c

반응형