2016-08-25 4 views
0

MySqlCommand를 실행 한 다음 MySqlDataReader를 사용하여 행을 읽은 후 전체 행을 단일 변수에 저장할 수 있습니까? 당신이 달성 할 수MySQL 데이터베이스에서 가져온 단일 행을 변수에 어떻게 저장합니까?

MySqlCommand cmd = new MySqlCommand(sql, conn); 
MySqlDataReader rdr = cmd.ExecuteReader(); 
while (rdr.Read()) 
{ 
    // Store a single row into a variable 
    // Pass the variable into another method 
} 
+0

'var str = rdr.GetString (0)' –

+0

@ Rakitić 첫 번째 열의 값을 저장하지 않겠습니까? 전체 행을 저장하는 방법을 묻습니다. – user2181948

+0

가장 좋은 방법은 [IDataRecord 인터페이스] (https://msdn.microsoft.com/en-us/library/system.data)에 대한 MSDN 문서에 설명되어 있습니다. idatareader (v = vs.110) .aspx).하지만 결국에는 각 열을 읽고 어딘가에 저장해야합니다. – Steve

답변

1

의 가장 좋은 점은 IDataRecord interface에 대한 MSDN의 문서에 설명되어 있지만, 마지막에 당신은 여전히 ​​각각의 단일 컬럼을 읽고 어딘가에 보관해야합니다. 그러나 더 객체 지향 접근 방식은

그래서 쿼리 당신이 가지고 있다고 가정을, 귀하의 기록에서 데이터를 표현하는 클래스가 해당 클래스의 인스턴스를 생성하고 해당 속성을 초기화 한 후 다른 방법으로 인스턴스를 전달하는 것입니다 당신이 어딘가에 당신의 Person 클래스를 정의 이제 간단한

SELECT IDPerson, FirstName, LastName from Persons 

이다 사용

public class Person 
{ 
    public int IDPerson {get;set;} 
    public string FirstName {get;set;} 
    public string LastName {get;set;} 
} 

그런 다음 루프는

작동
MySqlCommand cmd = new MySqlCommand(sql, conn); 
MySqlDataReader rdr = cmd.ExecuteReader(); 
while (rdr.Read()) 
{ 
    // Declare and initialize the instance of a Person 
    // (this is a single variable as per your requirements) 
    Person p = new Person() 
    { 
     IDPerson = rdr.GetInt32(0), 
     FirstName = rdr.GetString(1), 
     LastName = rdr.GetString(2) 
    }; 
    ProcessPerson(p); 
} 
관련 문제