2012-08-16 3 views
0

나는 Datareader를 사용하여 SQL 데이터베이스에서 데이터를 검색하고 Datatable에 채 웁니다. 그러나 datatable을 사용하지 않고 데이터를 처리하는 방법이 있는지 궁금합니다. 나는 내가 여기에, 나는 데이터베이스 (큐브)에서 데이터를 끌어 ADOMD 객체를 사용하기 위하여려고하고 이후 LINQ를 사용하려는 해달라고 .. 더 바람직합니다 객체를 사용하여개체를 사용하여 데이터 검색기

를 테이블 값을 처리하지만, 평균 -.

답변

1

dapper-dot-net을 살펴보십시오. ADOMD.NET과 함께 작동하는 방법을 잘 모르겠지만 동적 개체에서 쿼리 결과를 깔끔하게 구체화합니다.

1

항목을 반복하여 사용자 지정 클래스의 속성 값으로 설정하면됩니다. 아래 예제는 고객 테이블의 데이터를 읽고 고객 클래스 개체 목록을 만듭니다. 당신은 속성으로 ID와 이름을 가진 고객 POCO는 한 가정

List<Customer> custList= new List<Customer>(); 
string connString="yourConnectionStringHere"; 
using (var conn = new SqlConnection(connString)) 
{ 
    conn.Open(); 
    using (SqlCommand cmd = new SqlCommand()) 
    { 
     cmd.Connection = conn; 
     cmd.CommandType = CommandType.Text; 
     cmd.CommandText = "SELECT ID,NAME From Customer";   

     using (var reader = cmd.ExecuteReader()) 
     { 
      if (reader.HasRows) 
      { 
      while (reader.Read()) 
      { 
       var cust= new Customer(); 

        if (!reader.IsDBNull(reader.GetOrdinal("ID"))) 
         cust.ID = reader.GetInt32(reader.GetOrdinal("ID")); 

        if (!reader.IsDBNull(reader.GetOrdinal("Name"))) 
         cust.Name = reader.GetString(reader.GetOrdinal("Name")); 

        custList.Add(cust); 
      } 
      } 
     } 
    } 
} 
0

공개 목록 GetEmployee라는 (문자열 spname) {

 con.Open(); 
     cmd = new SqlCommand(); 
     cmd.Connection = con; 
     cmd.CommandText = spname; 
     cmd.CommandType = CommandType.StoredProcedure; 
     reader = cmd.ExecuteReader(); 
     List<EmployeeDetails> lstemp = new List<EmployeeDetails>(); 
     while (reader.Read()) 
     { 
      EmployeeDetails emp = new EmployeeDetails(); 
      emp.EmployeeId =Convert.ToInt32(reader["EmployeeId"].ToString()); 
      emp.FirstName = reader["FirstName"].ToString(); 
      emp.LastName = reader["LastName"].ToString(); 
      emp.DOB = Convert.ToDateTime(reader["DOB"].ToString()); 
      emp.Gender = Convert.ToInt32(reader["Gender"].ToString()); 
      emp.QName = reader["QName"].ToString(); 
      emp.Dname = reader["DName"].ToString(); 
      emp.Email = reader["Email"].ToString(); 



      lstemp.Add(emp); 

     } 


     return lstemp; 
    }